]> 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 f872aef0b55066196d54c61456678664736c1d93..ee97f7a32f571b52e0cf0e4ab79766a5763298bb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * Base class for forms
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Widget
- * @package   Laconica
- * @author    Evan Prodromou <evan@controlyourself.ca>
- * @author    Sarven Capadisli <csarven@controlyourself.ca>
- * @copyright 2009 Control Yourself, Inc.
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://laconi.ca/
+ * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -41,11 +41,11 @@ require_once INSTALLDIR.'/lib/widget.php';
  * lets us abstract out the basic features of the form.
  *
  * @category Widget
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
- * @author   Sarven Capadisli <csarven@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  *
  * @see      HTMLOutputter
  */
@@ -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');
+    }
 }