]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/form.php
Misses this file to merge. I like the comments.
[quix0rs-gnu-social.git] / lib / form.php
index b5547dbcdc5c341d4e803ac85590c2f6f168aaf5..ee97f7a32f571b52e0cf0e4ab79766a5763298bb 100644 (file)
@@ -28,7 +28,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -67,7 +67,7 @@ class Form extends Widget
     {
         $attributes = array('id' => $this->id(),
             'class' => $this->formClass(),
-            'method' => 'post',
+            'method' => $this->method(),
             'action' => $this->action());
 
         if (!empty($this->enctype)) {
@@ -91,7 +91,9 @@ class Form extends Widget
 
     function sessionToken()
     {
-        $this->out->hidden('token', common_session_token());
+        if (strtolower($this->method()) == 'post') {
+            $this->out->hidden('token-' . $this->id() ?: common_random_hexstr(3), common_session_token(), 'token');
+        }
     }
 
     /**
@@ -119,6 +121,18 @@ class Form extends Widget
     {
     }
 
+    /**
+     * HTTP method used to submit the form
+     *
+     * Defaults to post. Subclasses can override if they need to.
+     *
+     * @return string the method to use for submitting
+     */
+     function method()
+     {
+         return 'post';
+     }
+
     /**
      * Buttons for form actions
      *
@@ -160,7 +174,13 @@ class Form extends Widget
     }
 
     /**
-     * Class of the form.
+     * Class of the form. May include space-separated list of multiple classes.
+     *
+     * If 'ajax' is included, the form will automatically be submitted with
+     * an 'ajax=1' parameter added, and the resulting form or error message
+     * will replace the form after submission.
+     *
+     * It's up to you to make sure that the target action supports this!
      *
      * @return string the form's class
      */
@@ -169,4 +189,14 @@ class Form extends Widget
     {
         return 'form';
     }
+
+    function li()
+    {
+        $this->out->elementStart('li');
+    }
+
+    function unli()
+    {
+        $this->out->elementEnd('li');
+    }
 }