commit aac648d86e079e5687164ac8d4b5cc8a102b6a93
parent 50eb7a08b39b05ac6de208d7e23ddba9acf9a707
Author: Jan Dankert <devnull@localhost>
Date: Mon, 7 Nov 2011 23:36:13 +0100
Javascript-Funktion für Link-Knöpfe.
Diffstat:
4 files changed, 76 insertions(+), 12 deletions(-)
diff --git a/themes/default/include/elements.ini.php b/themes/default/include/elements.ini.php
@@ -24,7 +24,7 @@ input = class:text,default:,type:text,index,name:*,prefix,value,size:40,maxle
inputarea= name,rows:10,cols:40,value,index,onchange,prefix,class:inputarea,default:
insert = file,script,inline:false,url,name,function
label = for:*,value
-link = title:,config,target,var,url,class:,action,subaction,id,var1,value1,var2,value2,var3,value3,var4,value4,var5,value5,accesskey,name,anchor,frame:_self
+link = title:,config,type:,target,var,url,class:,action,subaction,id,var1,value1,var2,value2,var3,value3,var4,value4,var5,value5,accesskey,name,anchor,frame:_self
list = list:*,extract:false,key:list_key,value:list_value
logo = name:*
newline =
diff --git a/themes/default/include/html/link.inc.php b/themes/default/include/html/link.inc.php
@@ -35,12 +35,30 @@
#END-IF
//$tmp_url = Html::url($attr_action,$attr_subaction,!empty($attr_id)?$attr_id:$this->getRequestId(),$params);
- $json = new JSON();
- $tmp_data = $json->encode( array('action'=>!empty($attr_action)?$attr_action:$this->actionName,'subaction'=>!empty($attr_subaction)?$attr_subaction:$this->subActionName,'id'=>!empty($attr_id)?$attr_id:$this->getRequestId())
+
+ switch( $attr_type )
+ {
+ case 'post':
+ $json = new JSON();
+ $tmp_data = $json->encode( array('action'=>!empty($attr_action)?$attr_action:$this->actionName,'subaction'=>!empty($attr_subaction)?$attr_subaction:$this->subActionName,'id'=>!empty($attr_id)?$attr_id:$this->getRequestId())
+array(REQ_PARAM_TOKEN=>token())
+$params );
+ $tmp_function_call = "submitLink('".str_replace("\n",'',str_replace('"','"',$tmp_data))."');";
+ break;
+
+ case 'view':
+ $tmp_function_call = "startView(this,'".(!empty($attr_subaction)?$attr_subaction:$this->subActionName)."');";
+ break;
+
+ case 'url':
+ $tmp_function_call = "submitUrl(this,'".($attr_url)."');";
+ break;
+
+ default:
+ $tmp_function_call = "alert('TODO');";
+ }
- if ( substr($tmp_url,0,10) != 'javascript' )
- $tmp_url = "javascript:loadViewByName('".$attr_target."','".$tmp_url.(isset($attr_anchor)?'#'.$attr_anchor:'')."'); return false;";
+// if ( substr($tmp_url,0,10) != 'javascript' )
+// $tmp_url = "javascript:loadViewByName('".$attr_target."','".$tmp_url.(isset($attr_anchor)?'#'.$attr_anchor:'')."'); return false;";
-?><a target="<?php echo $attr_frame ?>"<?php if (isset($attr_name)) { ?> name="<?php echo $attr_name ?>"<?php }else{ ?> href="javascript:void(0);" onclick="linkSubmit('<?php echo str_replace("\n",'',str_replace('"','"',$tmp_data)) ?>');" <?php } ?> class="<?php echo $attr_class ?>"<?php if (isset($attr_accesskey)) echo ' accesskey="'.$attr_accesskey.'"' ?> title="<?php echo encodeHtml($attr_title) ?>">-
\ No newline at end of file
+?><a target="<?php echo $attr_frame ?>"<?php if (isset($attr_name)) { ?> name="<?php echo $attr_name ?>"<?php }else{ ?> href="javascript:void(0);" onclick="<?php echo $tmp_function_call ?>" <?php } ?> class="<?php echo $attr_class ?>"<?php if (isset($attr_accesskey)) echo ' accesskey="'.$attr_accesskey.'"' ?> title="<?php echo encodeHtml($attr_title) ?>">+
\ No newline at end of file
diff --git a/themes/default/js/openrat.js b/themes/default/js/openrat.js
@@ -302,6 +302,51 @@ function loadBranch(li,type,id)
/**
+ * Setzt neue View und aktualisiert alle Fenster.
+ * @param element
+ * @param action Action
+ * @param id Id
+ */
+function submitUrl( element,url )
+{
+ postUrl( url );
+
+ // Alle refresh-fähigen Views mit dem neuen Objekt laden.
+ refreshAllRefreshables();
+}
+
+
+
+function postUrl(url)
+{
+ $.ajax( { 'type':'POST',url:url, data:{}, success:function(data, textStatus, jqXHR)
+ {
+ $('div.window div.status div.loader').html(' ');
+ doResponse(data,textStatus);
+ } } );
+
+}
+
+
+
+/**
+ * Setzt neue View und aktualisiert alle Fenster.
+ * @param element
+ * @param action Action
+ * @param id Id
+ */
+function startView( element,view )
+{
+ var action = $(element).closest('div.frame').attr('data-action');
+ var url = createUrl(action, view, 0);
+ loadView( $(element).closest('div.filler'), url );
+
+ // Alle refresh-fähigen Views mit dem neuen Objekt laden.
+ // refreshAllRefreshables();
+}
+
+
+/**
* Setzt neue Action und aktualisiert alle Fenster.
* @param action Action
* @param id Id
@@ -345,20 +390,18 @@ function closeBranch(li,type,id)
}
-function linkSubmit(data)
+function submitLink(data)
{
var params = jQuery.parseJSON( data );
var url = './dispatcher.php';
$.ajax( { 'type':'POST',url:url, data:params, success:function(data, textStatus, jqXHR)
{
- $('div.window div.status div.loader').html(' ');
- doResponse(data,textStatus);
+ $('div.window div.status div.loader').html(' ');
+ doResponse(data,textStatus);
} } );
}
-
-
function formSubmit(form)
{
var status = $(form).parent().parent().parent().find('div.bottom div.status');
diff --git a/util/Html.class.php b/util/Html.class.php
@@ -73,6 +73,9 @@ class Html
// Session-Id ergaenzen
if ( $conf['interface']['url']['add_sessionid'] )
$params[ session_name() ] = session_id();
+
+ if ( config('security','use_post_token') )
+ $params[ 'token'] = token();
$fake_urls = $conf['interface']['url']['fake_url' ];
$url_format = $conf['interface']['url']['url_format'];