]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/SubMirror/actions/mirrorsettings.php
Improved type-hint for following methods:
[quix0rs-gnu-social.git] / plugins / SubMirror / actions / mirrorsettings.php
index a828b26feb68b07399662f83904f399af1a0cd8b..f0d00d6e55923008cccda46a1ae2b7a9e5b4e0ee 100644 (file)
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
 
-class MirrorSettingsAction extends AccountSettingsAction
+class MirrorSettingsAction extends SettingsAction
 {
     /**
      * Title of the page
@@ -38,7 +36,7 @@ class MirrorSettingsAction extends AccountSettingsAction
      */
     function title()
     {
-        // TRANS: Title.
+        // TRANS: Page title.
         return _m('Feed mirror settings');
     }
 
@@ -50,9 +48,9 @@ class MirrorSettingsAction extends AccountSettingsAction
 
     function getInstructions()
     {
-        // TRANS: Instructions.
+        // TRANS: Page instructions.
         return _m('You can mirror updates from many RSS and Atom feeds ' .
-                  'into your StatusNet timeline!');
+                  'into your GNU social timeline!');
     }
 
     /**
@@ -65,22 +63,35 @@ class MirrorSettingsAction extends AccountSettingsAction
     function showContent()
     {
         $user = common_current_user();
+        $provider = $this->trimmed('provider');
+        if ($provider) {
+            $this->showAddFeedForm($provider);
+        } else {
+            $this->elementStart('div', array('id' => 'add-mirror'));
+            $this->showAddWizard();
+            $this->elementEnd('div');
 
-        $this->showAddFeedForm();
-
-        $mirror = new SubMirror();
-        $mirror->subscriber = $user->id;
-        if ($mirror->find()) {
-            while ($mirror->fetch()) {
-                $this->showFeedForm($mirror);
+            $mirror = new SubMirror();
+            $mirror->subscriber = $user->id;
+            if ($mirror->find()) {
+                while ($mirror->fetch()) {
+                    $this->showFeedForm($mirror);
+                }
             }
         }
     }
 
+    function showAddWizard()
+    {
+        $form = new AddMirrorWizard($this);
+        $form->show();
+    }
+
     function showFeedForm($mirror)
     {
-        $profile = Profile::staticGet('id', $mirror->subscribed);
-        if ($profile) {
+        $profile = Profile::getKV('id', $mirror->subscribed);
+
+        if ($profile instanceof Profile) {
             $form = new EditMirrorForm($this, $profile);
             $form->show();
         }
@@ -88,10 +99,44 @@ class MirrorSettingsAction extends AccountSettingsAction
 
     function showAddFeedForm()
     {
-        $form = new AddMirrorForm($this);
+        switch ($this->arg('provider')) {
+        case 'statusnet':
+            break;
+        case 'wordpress':
+            break;
+        case 'linkedin':
+            break;
+        case 'feed':
+        default:
+            $form = new AddMirrorForm($this);
+        }
         $form->show();
     }
 
+    /**
+     *
+     * @param array $args
+     *
+     * @todo move the ajax display handling to common code
+     */
+    function handle(array $args=array())
+    {
+        if ($this->boolean('ajax')) {
+            $this->startHTML('text/xml;charset=utf-8');
+            $this->elementStart('head');
+            // TRANS: Title for page with form to add a mirror feed provider on.
+            $this->element('title', null, _m('Provider add'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+
+            $this->showAddFeedForm();
+
+            $this->elementEnd('body');
+            $this->endHTML();
+        } else {
+            return parent::handle($args);
+        }
+    }
     /**
      * Handle a POST request
      *
@@ -102,4 +147,29 @@ class MirrorSettingsAction extends AccountSettingsAction
     function handlePost()
     {
     }
+
+    /**
+     * Show the local navigation menu
+     *
+     * This is the same for all settings, so we show it here.
+     *
+     * @return void
+     */
+    function showLocalNav()
+    {
+        $menu = new SettingsNav($this);
+        $menu->show();
+    }
+
+    function showScripts()
+    {
+        parent::showScripts();
+        $this->script('plugins/SubMirror/js/mirrorsettings.js');
+    }
+
+    function showStylesheets()
+    {
+        parent::showStylesheets();
+        $this->cssLink('plugins/SubMirror/css/mirrorsettings.css');
+    }
 }