diff options
author | Friendika <info@friendika.com> | 2011-06-16 15:29:04 -0700 |
---|---|---|
committer | Friendika <info@friendika.com> | 2011-06-16 15:29:04 -0700 |
commit | bb73c0b9f307accaa284820aaa11852c8481682f (patch) | |
tree | cc192702c535f5a477e72cd873ecf4f80c4568dc /include | |
parent | 0f3292fefb96016ad98b8f25746824d9e3cff31e (diff) | |
parent | 6709beb2ac776bb06bd0d9d7749faac9a065863c (diff) | |
download | volse-hubzilla-bb73c0b9f307accaa284820aaa11852c8481682f.tar.gz volse-hubzilla-bb73c0b9f307accaa284820aaa11852c8481682f.tar.bz2 volse-hubzilla-bb73c0b9f307accaa284820aaa11852c8481682f.zip |
Merge branch 'pull'
Diffstat (limited to 'include')
-rw-r--r-- | include/main.js | 56 | ||||
-rw-r--r-- | include/nav.php | 9 | ||||
-rw-r--r-- | include/template_processor.php | 50 |
3 files changed, 88 insertions, 27 deletions
diff --git a/include/main.js b/include/main.js index 18cb55328..3cc607977 100644 --- a/include/main.js +++ b/include/main.js @@ -29,10 +29,33 @@ var langSelect = false; var commentBusy = false; - $(document).ready(function() { + $(function() { $.ajaxSetup({cache: false}); msie = $.browser.msie ; + + + /* nav update event */ + $('nav').bind('nav-update', function(e,data){; + var net = $(data).find('net').text(); + if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() } + $('#net-update').html(net); + var home = $(data).find('home').text(); + if(home == 0) { home = ''; $('#home-update').hide() } else { $('#home-update').show() } + $('#home-update').html(home); + var mail = $(data).find('mail').text(); + if(mail == 0) { mail = ''; $('#mail-update').hide() } else { $('#mail-update').show() } + $('#mail-update').html(mail); + var intro = $(data).find('intro').text(); + var register = $(data).find('register').text(); + if(intro == 0) { intro = ''; } + if(register != 0 && intro != '') { intro = intro+'/'+register; } + if(register != 0 && intro == '') { intro = '0/'+register; } + if (intro == '') { $('#notify-update').hide() } else { $('#notify-update').show() } + $('#notify-update').html(intro); + }); + + NavUpdate(); // Allow folks to stop the ajax page updates with the pause/break key $(document).keypress(function(event) { @@ -70,23 +93,8 @@ if(! stopped) { $.get("ping",function(data) { $(data).find('result').each(function() { - var net = $(this).find('net').text(); - if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() } - $('#net-update').html(net); - var home = $(this).find('home').text(); - if(home == 0) { home = ''; $('#home-update').hide() } else { $('#home-update').show() } - $('#home-update').html(home); - var mail = $(this).find('mail').text(); - if(mail == 0) { mail = ''; $('#mail-update').hide() } else { $('#mail-update').show() } - $('#mail-update').html(mail); - var intro = $(this).find('intro').text(); - var register = $(this).find('register').text(); - if(intro == 0) { intro = ''; } - if(register != 0 && intro != '') { intro = intro+'/'+register; } - if(register != 0 && intro == '') { intro = '0/'+register; } - if (intro == '') { $('#notify-update').hide() } else { $('#notify-update').show() } - $('#notify-update').html(intro); - + // send nav-update event + $('nav').trigger('nav-update', this); }); }) ; } @@ -279,3 +287,15 @@ }); } +/** + * sprintf in javascript + * "{0} and {1}".format('zero','uno'); + **/ +String.prototype.format = function() { + var formatted = this; + for (var i = 0; i < arguments.length; i++) { + var regexp = new RegExp('\\{'+i+'\\}', 'gi'); + formatted = formatted.replace(regexp, arguments[i]); + } + return formatted; +}; diff --git a/include/nav.php b/include/nav.php index b37863aa1..238d87035 100644 --- a/include/nav.php +++ b/include/nav.php @@ -107,10 +107,15 @@ function nav(&$a) { $nav['settings'] = array('settings', t('Settings'),""); $nav['profiles'] = array('profiles', t('Profiles'),""); $nav['contacts'] = array('contacts', t('Contacts'),""); - - } + /** + * Admin page + */ + if (is_site_admin()){ + $nav['admin'] = array('admin/', t('Admin'), ""); + } + /** * diff --git a/include/template_processor.php b/include/template_processor.php index d8dfbaedb..3f79ed593 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -8,6 +8,18 @@ var $nodes = array(); var $done = false; + private function _preg_error(){ + switch(preg_last_error()){ + case PREG_INTERNAL_ERROR: die('PREG_INTERNAL_ERROR'); break; + case PREG_BACKTRACK_LIMIT_ERROR: die('PREG_BACKTRACK_LIMIT_ERROR'); break; + case PREG_RECURSION_LIMIT_ERROR: die('PREG_RECURSION_LIMIT_ERROR'); break; + case PREG_BAD_UTF8_ERROR: die('PREG_BAD_UTF8_ERROR'); break; + case PREG_BAD_UTF8_OFFSET_ERROR: die('PREG_BAD_UTF8_OFFSET_ERROR'); break; + default: + die("Unknown preg error."); + } + } + private function _build_replace($r, $prefix){ if(is_array($r) && count($r)) { @@ -40,11 +52,28 @@ /** * IF node * - * {{ if <$var> }}...{{ endif }} + * {{ if <$var> }}...[{{ else }} ...] {{ endif }} + * {{ if <$var>==<val|$var> }}...[{{ else }} ...]{{ endif }} + * {{ if <$var>!=<val|$var> }}...[{{ else }} ...]{{ endif }} */ private function _replcb_if($args){ - $val = $this->_get_var($args[2]); - return ($val?$args[3]:""); + + if (strpos($args[2],"==")>0){ + list($a,$b) = array_map("trim",explode("==",$args[2])); + $a = $this->_get_var($a); + if ($b[0]=="$") $b = $this->_get_var($b); + $val = ($a == $b); + } else if (strpos($args[2],"!=")>0){ + list($a,$b) = explode("!=",$args[2]); + $a = $this->_get_var($a); + if ($b[0]=="$") $b = $this->_get_var($b); + $val = ($a != $b); + } else { + $val = $this->_get_var($args[2]); + } + list($strue, $sfalse)= preg_split("|{{ *else *}}|", $args[3]); + + return ($val?$strue:$sfalse); } /** @@ -58,7 +87,8 @@ list($keyname, $varname) = explode("=>",$m[1]); if (is_null($varname)) { $varname=$keyname; $keyname=""; } if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; - $vals = $this->r[$m[0]]; + //$vals = $this->r[$m[0]]; + $vals = $this->_get_var($m[0]); $ret=""; if (!is_array($vals)) return $ret; foreach ($vals as $k=>$v){ @@ -96,13 +126,16 @@ private function _replcb_node($m) { $node = $this->nodes[$m[1]]; if (method_exists($this, "_replcb_".$node[1])){ - return call_user_func(array($this, "_replcb_".$node[1]), $node); + $s = call_user_func(array($this, "_replcb_".$node[1]), $node); } else { - return ""; + $s = ""; } + $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); + return $s; } private function _replcb($m){ + //var_dump(array_map('htmlspecialchars', $m)); $this->done = false; $this->nodes[] = (array) $m; return "||". (count($this->nodes)-1) ."||"; @@ -112,8 +145,10 @@ $this->done = false; while (!$this->done){ $this->done=true; - $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*){{ *end\1 *}}|', array($this, "_replcb"), $s); + $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*({{ *else *}}[^{]*)?){{ *end\1 *}}|', array($this, "_replcb"), $s); + if ($s==Null) $this->_preg_error(); } + //({{ *else *}}[^{]*)? krsort($this->nodes); return $s; } @@ -128,6 +163,7 @@ #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s); $s = $this->_build_nodes($s); $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); + if ($s==Null) $this->_preg_error(); $s = str_replace($this->search,$this->replace, $s); return $s; |