Переглянути джерело

API cleanup. Login history cleanup. Title enforcing. Flags

Nathaniel van Diepen 10 роки тому
батько
коміт
baaf3b2b7b
6 змінених файлів з 27 додано та 19 видалено
  1. 1 1
      .htaccess
  2. 3 3
      api.php
  3. 2 2
      data/pages/login.template
  4. 3 2
      index.php
  5. 18 10
      js/index.js
  6. 0 1
      php/functions.php

+ 1 - 1
.htaccess

@@ -11,7 +11,7 @@
 	RewriteRule ^\!([^/]*)$ /index.php?type=issue&id=$1 [QSA,L]
 	RewriteRule ^scrum-([^/]*)$ /index.php?type=scrum&id=$1 [QSA,L]
 	RewriteRule ^admin-([^/]*)$ /index.php?type=admin&id=$1 [QSA,L]
-	RewriteRule ^page-([^/]*)$ /index.php?type=template&id=$1 [QSA,L]
+	RewriteRule ^page-([^/]*)$ /index.php?type=page&id=$1 [QSA,L]
 	ErrorDocument 404 /
 </IfModule>
 # File security

+ 3 - 3
api.php

@@ -33,7 +33,7 @@
 				case 'admin':
 					// TODO - handle admin requests
 				break;
-				case 'template':
+				case 'page':
 					if(file_exists(PATH_DATA.'pages/'.$id.'.template')){
 						$ret['template'] = file_get_contents(PATH_DATA.'pages/'.$id.'.template');
 						if(file_exists(PATH_DATA.'context/'.$id.'.json')){
@@ -56,7 +56,7 @@
 							case 'login':
 								$ret['state'] = Array(
 									'data'=>Array(
-										'type'=>'template',
+										'type'=>'page',
 										'id'=>'login',
 									)
 								);
@@ -75,7 +75,7 @@
 							case 'register':
 								$ret['state'] = Array(
 									'data'=>Array(
-										'type'=>'template',
+										'type'=>'page',
 										'id'=>'register'
 									)
 								);

+ 2 - 2
data/pages/login.template

@@ -23,10 +23,10 @@
 		apiCall(data,function(d){
 			if(!d.error){
 				setKey(d.key);
-				loadState('page-index');
+				History.go(-1);
 			}else{
 				setKey(null);
-				loadState('page-login');
+				apiState('page-login');
 			}
 			return false;
 		});

+ 3 - 2
index.php

@@ -14,7 +14,7 @@
 		$get = $_GET['get'];
 		unset($_GET['get']);
 		if(!isset($_GET['type']) || !isset($_GET['id'])){
-			$type = 'template';
+			$type = 'page';
 			$id = 'index';
 		}else{
 			$type = $_GET['type'];
@@ -29,10 +29,11 @@
 					case 'user':$url='~'.$id;break;
 					case 'group':$url='+'.$id;break;
 					case 'issue':$url='!'.$id;break;
-					case 'template':$url='page-'.$id;break;
+					case 'page':$url='page-'.$id;break;
 					default:$url=$type.'-'.$id;
 				}
 				$json['state']['url'] = $url;
+				$json['state']['title'] = ucwords($type.' - '.$id);
 				die(json_encode($json));
 			break;
 			case 'api':

+ 18 - 10
js/index.js

@@ -3,7 +3,14 @@
 	var State = History.getState(),
 		Old = {},
 		Key = null,
-		flag = false,
+		flags = [],
+		flag = window.flag = function(name,value){
+			if(exists(value)){
+				flags[name] = value;
+			}else{
+				return exists(flags[name])?flags[name]:false;
+			}
+		},
 		settings = {},
 		exists = function(v){
 			return typeof v != 'undefined';
@@ -44,7 +51,7 @@
 				}else{
 					if(location.href.substr(location.href.lastIndexOf('/')+1) != d.state.url){
 						console.log('Forced redirection to '+d.state.url);
-						History.pushState(d.state.data,d.state.title,d.state.url);
+						History.replaceState(d.state.data,d.state.title,d.state.url);
 					}
 				}
 				if(exists(callback)){
@@ -63,7 +70,7 @@
 				if(exists(d['error'])){
 					error(d);
 				}else{
-					History.pushState(d.state.data,document.title,href);
+					History.pushState(d.state.data,d.state.title,href);
 					getNewState();
 				}
 				if(exists(callback)){
@@ -82,7 +89,7 @@
 				if(exists(d['error'])){
 					error(d);
 				}else{
-					History.replaceState(d.state.data,document.title,href);
+					History.replaceState(d.state.data,d.state.title,href);
 					getNewState();
 				}
 				if(exists(callback)){
@@ -94,7 +101,6 @@
 			e = '['+State.url+']'+e.error;
 			console.error(e+"\n"+(exists(e.state)?JSON.stringify(e.state):''));
 			alert(e);
-			//History.back();
 		},
 		getNewState = function(){
 			State = History.getState();
@@ -136,7 +142,7 @@
 							return false;
 						});
 					}
-				})
+				});
 			}
 		};
 	if(exists($.cookie('key'))){
@@ -148,8 +154,9 @@
 		$(window).on('statechange',function(){
 			getNewState();
 			if(!equal(State.data,Old)){
+				document.title = State.title;
 				switch(State.data.type){
-					case 'template':case 'user':
+					case 'page':case 'user':
 						apiCall(State.data,function(d){
 							if(exists(d.context)){
 								if(!exists(d.context.key)&&Key!==null){
@@ -181,12 +188,12 @@
 		});
 		if($.isEmptyObject(State.data)){
 			History.replaceState({
-				type: 'template',
+				type: 'page',
 				id: 'index'
 			},'Bugs','page-index');
 			console.log('Forcing default state.');
 		}else{
-			flag = true;
+			flag('load',true);
 		}
 		var data = {
 			get: 'settings',
@@ -195,12 +202,13 @@
 		$.get(location.href,data,function(d){
 			settings = d;
 			apiState(location.href,function(){
-				if(flag){
+				if(flag('load')){
 					State.data = {
 						type: '',
 						data: ''
 					};
 				}
+				flag('load',false);
 			});
 		},'json');
 	});

+ 0 - 1
php/functions.php

@@ -30,7 +30,6 @@
 			case 'user':$url='~'.$id;break;
 			case 'group':$url='+'.$id;break;
 			case 'issue':$url='!'.$id;break;
-			case 'template':$url='page-'.$id;break;
 			case 'action':$url='';break;
 			default:$url=$type.'-'.$id;
 		}