]> git.andy128k.dev Git - ipf.git/commitdiff
rework change referrer feature
authorAndrey Kutejko <andy128k@gmail.com>
Sun, 4 Jan 2015 16:07:37 +0000 (18:07 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Sun, 4 Jan 2015 17:36:55 +0000 (19:36 +0200)
ipf/admin/component.php
ipf/admin/templates/admin/change.html
ipf/admin/templates/admin/delete.html

index 69fcd1971b712b3809c548c220c3899d998caf9e..f07523cc1e1c30cd28517b234b4ab208144481ba 100644 (file)
@@ -154,7 +154,22 @@ abstract class IPF_Admin_Component
         return array();
     }
 
-    // Views Function
+    protected function referrerOfChangeAction()
+    {
+        return
+            \PFF\Arr::get($this->request->REQUEST, 'ipf_referrer',
+            \PFF\Arr::get($this->request->SERVER, 'HTTP_REFERER',
+            ''));
+    }
+
+    protected function changeSucceed()
+    {
+        $url = @$this->request->POST['ipf_referrer'];
+        if (!$url)
+            $url = IPF_HTTP_URL::urlForView(array('IPF_Admin_Controller', 'listItems'), array($this->app->slug(), $this->slug()));
+        return new IPF_HTTP_Response_Redirect($url);
+    }
+
     public function addItem()
     {
         $errors = false;
@@ -164,13 +179,8 @@ abstract class IPF_Admin_Component
 
             if ($form->isValid()) {
                 list($id, $object) = $this->saveObject($form, null);
-
                 IPF_Admin_Log::logObject($this, 'add', $object, $id);
-
-                $url = @$this->request->POST['ipf_referrer'];
-                if (!$url)
-                    $url = IPF_HTTP_URL::urlForView(array('IPF_Admin_Controller', 'listItems'), array($this->app->slug(), $this->slug()));
-                return new IPF_HTTP_Response_Redirect($url);
+                return $this->changeSucceed();
             }
             $errors = true;
         } else {
@@ -190,6 +200,7 @@ abstract class IPF_Admin_Component
             'extra_css' => $extraMedia['css'],
             'errors' => $errors,
             'objecttools' => array(),
+            'ipf_referrer' => $this->referrerOfChangeAction(),
         ));
     }
 
@@ -201,13 +212,8 @@ abstract class IPF_Admin_Component
 
         if ($this->request->method == 'POST') {
             IPF_Admin_Log::logObject($this, 'delete', $object);
-
             $this->deleteObject($object);
-
-            $url = @$this->request->POST['ipf_referrer'];
-            if (!$url)
-                $url = IPF_HTTP_URL::urlForView(array('IPF_Admin_Controller', 'listItems'), array($this->app->slug(), $this->slug()));
-            return new IPF_HTTP_Response_Redirect($url);
+            return $this->changeSucceed();
         }
 
         return $this->fullContext(array(
@@ -215,7 +221,7 @@ abstract class IPF_Admin_Component
             'classname' => $this->verbose_name(),
             'object' => $object,
             'object_id' => $id,
-            'ipf_referrer' => @$this->request->GET['ipf_referrer'],
+            'ipf_referrer' => $this->referrerOfChangeAction(),
         ));
     }
 
@@ -232,14 +238,8 @@ abstract class IPF_Admin_Component
 
             if ($form->isValid()) {
                 list($id, $object) = $this->saveObject($form, $object);
-
                 IPF_Admin_Log::logObject($this, 'change', $object, $id);
-
-                $url = @$this->request->POST['ipf_referrer'];
-                if (!$url)
-                    $url = IPF_HTTP_URL::urlForView(array('IPF_Admin_Controller', 'listItems'), array($this->app->slug(), $this->slug()));
-
-                return new IPF_HTTP_Response_Redirect($url);
+                return $this->changeSucceed();
             }
             $errors = true;
         } else {
@@ -262,6 +262,7 @@ abstract class IPF_Admin_Component
             'extra_css' => $extraMedia['css'],
             'errors' => $errors,
             'objecttools' => $objecttools,
+            'ipf_referrer' => $this->referrerOfChangeAction(),
         ));
     }
 
index d884d8879471aa827d013664a9602ee91f9a0585..910df4f2664cb8cfa0a84968bc943580ae4d28c2 100644 (file)
@@ -27,7 +27,7 @@
           {/block}
         </ul>
         <form method="post" enctype="multipart/form-data">
-        <input type="hidden" name="ipf_referrer" id="id_ipf_referrer" value="" />
+        <input type="hidden" name="ipf_referrer" value="{$ipf_referrer}">
         <div>
             {if $errors}
             <p class="errornote">Please correct the error below.</p>
@@ -38,7 +38,7 @@
               {/block}
             </fieldset>
             <div class="submit-row change-form">
-                {if ($mode=='change') && $component->isAccessible(array('delete'))}<p class="float-left"><a id="id_a_delete" href="{url array('IPF_Admin_Controller', 'deleteItem'), array($app->slug(), $component->slug(), $object_id)}" class="deletelink">{trans 'Delete'}</a></p>{/if}
+                {if ($mode=='change') && $component->isAccessible(array('delete'))}<p class="float-left"><a href="{url array('IPF_Admin_Controller', 'deleteItem'), array($app->slug(), $component->slug(), $object_id)}?ipf_referrer={$ipf_referrer}" class="deletelink">{trans 'Delete'}</a></p>{/if}
                 {if ($mode=='change') && $component->isAccessible(array('change'))}<input type="submit" value="{trans 'Save'}" class="default" />{/if}
                 {if ($mode=='add') && $component->isAccessible(array('add'))}<input type="submit" value="{trans 'Add'}" class="default" />{/if}
                 <input type="button" value="{trans 'Cancel'}" onclick="javascript:history.back();" />
 {/block}
 
 {block scripts}
-<script>{literal}
-$(function(){
-    $("#id_ipf_referrer").val(document.referrer);
-    var del_href = $("#id_a_delete").attr("href");
-    $("#id_a_delete").attr("href", del_href+'?ipf_referrer='+document.referrer);
-});
-{/literal}</script>
 {foreach $extra_js as $js}
 {$js|safe}
 {/foreach}
index d346a166d384432d3b772ca27bb58d68933b9cce..7b991b271124905062cd145cef853820f1a4725f 100644 (file)
@@ -13,7 +13,7 @@
 <div id="content" class="colM">
   <h1>{$page_title}</h1>
   <form method="post">
-    <input type="hidden" name="ipf_referrer" id="id_ipf_referrer" value="{$ipf_referrer}" />
+    <input type="hidden" name="ipf_referrer" value="{$ipf_referrer}">
     <p>Are you sure you want to delete <em>{$object}</em>?</p>
     <input type="submit" value="Yes, delete it!" class="default" />
     <input type="button" value="Cancel" onclick="javascript:history.back();" />