]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Making us less dependant on javascript trust
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 24 Feb 2014 01:05:31 +0000 (02:05 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 24 Feb 2014 01:05:31 +0000 (02:05 +0100)
Many of the microapps are pretty javascript dependant, but at least
we should allow users to get to the new notice field without allowing
javascript to run in the browser. :)

EVENTS.txt
js/util.js
lib/action.php
lib/microappplugin.php
plugins/QnA/QnAPlugin.php

index fd75036894293bc5d2305f7364f2373d63d0bbfd..0a1951d6403fb8b8f0ac8329dd550a547901a174 100644 (file)
@@ -966,6 +966,9 @@ StartShowNoticeForm: before showing the notice form (before <form>)
 EndShowNoticeForm: after showing the notice form (after <form>)
 - $action: action being executed
 
+StartShowEntryForms: microapp entry form tab data
+- &$tabs: tab assoc array with 'tag' => (title, href to create new entry)
+
 StartGrantRole: when a role is being assigned
 - $profile: profile that will have the role
 - $role: string name of the role
index 839648485948898c19f6b8f64707106148ba96bb..5f95595edd134ec5c646ee151b7e9c536709447c 100644 (file)
@@ -1414,6 +1414,8 @@ var SN = { // StatusNet
                     SN.Init.NoticeFormSetup(form);
                 })
                 .find('.notice_data-text').focus();
+
+        return false;
     },
 
         showMoreMenuItems: function (menuid) {
index 95c88b2299fe30867dd9848264dfca42cfc7222d..74ced563fbbbc46e3951dc9dfc5431db7ac38f89 100644 (file)
@@ -681,7 +681,8 @@ class Action extends HTMLOutputter // lawsuit
     function showNoticeForm()
     {
         // TRANS: Tab on the notice form.
-        $tabs = array('status' => _m('TAB','Status'));
+        $tabs = array('status' => array('title' => _m('TAB','Status'),
+                                        'href'  => common_local_url('newnotice')));
 
         $this->elementStart('div', 'input_forms');
 
@@ -689,7 +690,8 @@ class Action extends HTMLOutputter // lawsuit
             $this->elementStart('ul', array('class' => 'nav',
                                             'id' => 'input_form_nav'));
 
-            foreach ($tabs as $tag => $title) {
+            foreach ($tabs as $tag => $data) {
+                $tag = htmlspecialchars($tag);
                 $attrs = array('id' => 'input_form_nav_'.$tag,
                                'class' => 'input_form_nav_tab');
 
@@ -702,8 +704,9 @@ class Action extends HTMLOutputter // lawsuit
                 $this->elementStart('li', $attrs);
 
                 $this->element('a',
-                               array('href' => 'javascript:SN.U.switchInputFormTab("'.$tag.'")'),
-                               $title);
+                               array('onclick' => 'return SN.U.switchInputFormTab("'.$tag.'");',
+                                     'href' => $data['href']),
+                               $data['title']);
                 $this->elementEnd('li');
             }
 
@@ -716,7 +719,7 @@ class Action extends HTMLOutputter // lawsuit
             $form->show();
             $this->elementEnd('div');
 
-            foreach ($tabs as $tag => $title) {
+            foreach ($tabs as $tag => $data) {
                 $attrs = array('class' => 'input_form',
                                'id' => 'input_form_'.$tag);
 
index 8cb1450788e9f576bd9397310424f4434ef03aaa..4da3bef935a7e60c7a6c6da3e00511df18f4c2f3 100644 (file)
@@ -162,6 +162,14 @@ abstract class MicroAppPlugin extends Plugin
      */
     abstract function deleteRelated($notice);
 
+    /**
+     *
+     */
+    public function newFormAction() {
+        // such as 'newbookmark' or 'newevent' route
+        return 'new'.$this->tag();
+    }
+
     /**
      * Check if a given notice object should be handled by this micro-app
      * plugin.
@@ -536,7 +544,9 @@ abstract class MicroAppPlugin extends Plugin
 
     function onStartShowEntryForms(&$tabs)
     {
-        $tabs[$this->tag()] = $this->appTitle();
+        $tabs[$this->tag()] = array('title' => $this->appTitle(),
+                                    'href'  => common_local_url($this->newFormAction()),
+                                   );
         return true;
     }
 
index a4709df462e6f97ce92e4e37f863c1fab320b991..6e2560be35a29a48a9d747dd8c5a1bdc09afa076 100644 (file)
@@ -65,6 +65,10 @@ class QnAPlugin extends MicroAppPlugin
         return true;
     }
 
+    public function newFormAction() {
+        return 'qnanewquestion';
+    }
+
     /**
      * Map URLs to actions
      *