]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #7742 from MrPetovan/task/7190-remove-defaults-mod
authorPhilipp <admin+Github@philipp.info>
Tue, 15 Oct 2019 16:07:53 +0000 (18:07 +0200)
committerGitHub <noreply@github.com>
Tue, 15 Oct 2019 16:07:53 +0000 (18:07 +0200)
Replace deprecated defaults() calls by a combination of ?? and ?: operators in mod/

52 files changed:
doc/Addons.md
doc/de/Addons.md
mod/item.php
mod/manage.php [deleted file]
src/App/Module.php
src/App/Router.php
src/Content/Nav.php
src/Content/Text/BBCode.php
src/Content/Text/HTML.php
src/Core/Logger.php
src/Model/User.php
src/Module/Delegation.php [new file with mode: 0644]
src/Module/HTTPException/MethodNotAllowed.php [new file with mode: 0644]
src/Module/HTTPException/PageNotFound.php [new file with mode: 0644]
src/Module/PageNotFound.php [deleted file]
src/Module/Search/Index.php
src/Module/Search/Saved.php
static/routes.config.php
tests/src/App/ModuleTest.php
tests/src/App/RouterTest.php
view/js/linkPreview.js
view/js/main.js
view/templates/delegation.tpl [new file with mode: 0644]
view/templates/manage.tpl [deleted file]
view/templates/nav.tpl
view/templates/searchbox.tpl
view/templates/widget/saved_searches.tpl
view/theme/duepuntozero/style.css
view/theme/duepuntozero/templates/nav.tpl
view/theme/duepuntozero/theme.php
view/theme/frio/css/style.css
view/theme/frio/js/textedit.js
view/theme/frio/js/theme.js
view/theme/frio/templates/nav.tpl
view/theme/frio/templates/searchbox.tpl
view/theme/frio/templates/widget/saved_searches.tpl
view/theme/quattro/dark/style.css
view/theme/quattro/green/style.css
view/theme/quattro/js/quattro.js
view/theme/quattro/lilac/style.css
view/theme/quattro/quattro.less
view/theme/quattro/templates/nav.tpl
view/theme/quattro/templates/widget/saved_searches.tpl
view/theme/smoothly/style.css
view/theme/smoothly/templates/bottom.tpl
view/theme/smoothly/templates/nav.tpl
view/theme/smoothly/theme.php
view/theme/vier/plus.css
view/theme/vier/plusminus.css
view/theme/vier/style.css
view/theme/vier/templates/nav.tpl
view/theme/vier/theme.php

index 47d16085a1216595c44914695fb4d122014ed62e..0382cee49ccf12e892fa54e6d87853b27c5bc92b 100644 (file)
@@ -533,7 +533,7 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
     Hook::callAll("parse_link", $arr);
 
-### mod/manage.php
+### src/Module/Delegation.php
 
     Hook::callAll('home_init', $ret);
 
index 35ce0e28b4150ed0085390b9ed9726eee84604cb..3cbbb4b0bea9d1d6e2e36f748a6d0ec13238a4d6 100644 (file)
@@ -256,7 +256,7 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
 
     Hook::callAll("parse_link", $arr);
 
-### mod/manage.php
+### src/Module/Delegation.php
 
     Hook::callAll('home_init', $ret);
 
index 18d8979acf24dde33aca982ff4dc8a1fdad3bd94..77f23fee8d24d4b72c70f0b74051934d19ee128d 100644 (file)
@@ -229,6 +229,9 @@ function item_post(App $a) {
                $body .= $att_bbcode;
        }
 
+       // Convert links with empty descriptions to links without an explicit description
+       $body = preg_replace('(\[url=(.*?)\]\[\/url\])ism', '[url]$1[/url]', $body);
+
        if (!empty($orig_post)) {
                $str_group_allow   = $orig_post['allow_gid'];
                $str_contact_allow = $orig_post['allow_cid'];
diff --git a/mod/manage.php b/mod/manage.php
deleted file mode 100644 (file)
index a1ca87e..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * @file mod/manage.php
- */
-
-use Friendica\App;
-use Friendica\Core\Hook;
-use Friendica\Core\L10n;
-use Friendica\Core\Renderer;
-use Friendica\Core\Session;
-use Friendica\Database\DBA;
-
-function manage_post(App $a) {
-
-       if (!local_user()) {
-               return;
-       }
-
-       $uid = local_user();
-       $orig_record = $a->user;
-
-       if(!empty($_SESSION['submanage'])) {
-               $user = DBA::selectFirst('user', [], ['uid' => $_SESSION['submanage']]);
-               if (DBA::isResult($user)) {
-                       $uid = intval($user['uid']);
-                       $orig_record = $user;
-               }
-       }
-
-       $identity = (!empty($_POST['identity']) ? intval($_POST['identity']) : 0);
-       if (!$identity) {
-               return;
-       }
-
-       $limited_id = 0;
-       $original_id = $uid;
-
-       $manage = DBA::select('manage', ['mid'], ['uid' => $uid]);
-       while ($m = DBA::fetch($manage)) {
-               if ($identity == $m['mid']) {
-                       $limited_id = $m['mid'];
-                       break;
-               }
-       }
-       DBA::close($manage);
-
-       if ($limited_id) {
-               $user = DBA::selectFirst('user', [], ['uid' => $limited_id]);
-       } else {
-               // Check if the target user is one of our children
-               $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['uid']]);
-
-               // Check if the target user is one of our siblings
-               if (!DBA::isResult($user) && ($orig_record['parent-uid'] != 0)) {
-                       $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['parent-uid']]);
-               }
-
-               // Check if it's our parent
-               if (!DBA::isResult($user) && ($orig_record['parent-uid'] != 0) && ($orig_record['parent-uid'] == $identity)) {
-                       $user = DBA::selectFirst('user', [], ['uid' => $identity]);
-               }
-
-               // Finally check if it's out own user
-               if (!DBA::isResult($user) && ($orig_record['uid'] != 0) && ($orig_record['uid'] == $identity)) {
-                       $user = DBA::selectFirst('user', [], ['uid' => $identity]);
-               }
-
-       }
-
-       if (!DBA::isResult($user)) {
-               return;
-       }
-
-       Session::clear();
-
-       Session::setAuthenticatedForUser($a, $user, true, true);
-
-       if ($limited_id) {
-               $_SESSION['submanage'] = $original_id;
-       }
-
-       $ret = [];
-       Hook::callAll('home_init', $ret);
-
-       $a->internalRedirect('profile/' . $a->user['nickname']);
-       // NOTREACHED
-}
-
-function manage_content(App $a) {
-
-       if (!local_user()) {
-               notice(L10n::t('Permission denied.') . EOL);
-               return;
-       }
-
-       if (!empty($_GET['identity'])) {
-               $_POST['identity'] = $_GET['identity'];
-               manage_post($a);
-               return;
-       }
-
-       $identities = $a->identities;
-
-       //getting additinal information for each identity
-       foreach ($identities as $key => $id) {
-               $thumb = DBA::selectFirst('contact', ['thumb'], ['uid' => $id['uid'] , 'self' => true]);
-               if (!DBA::isResult($thumb)) {
-                       continue;
-               }
-
-               $identities[$key]['thumb'] = $thumb['thumb'];
-
-               $identities[$key]['selected'] = ($id['nickname'] === $a->user['nickname']);
-
-               $condition = ["`uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", $id['uid'], NOTIFY_INTRO, NOTIFY_MAIL];
-               $params = ['distinct' => true, 'expression' => 'parent'];
-               $notifications = DBA::count('notify', $condition, $params);
-
-               $params = ['distinct' => true, 'expression' => 'convid'];
-               $notifications += DBA::count('mail', ['uid' => $id['uid'], 'seen' => false], $params);
-
-               $notifications += DBA::count('intro', ['blocked' => false, 'ignore' => false, 'uid' => $id['uid']]);
-
-               $identities[$key]['notifications'] = $notifications;
-       }
-
-       $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('manage.tpl'), [
-               '$title' => L10n::t('Manage Identities and/or Pages'),
-               '$desc' => L10n::t('Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'),
-               '$choose' => L10n::t('Select an identity to manage: '),
-               '$identities' => $identities,
-               '$submit' => L10n::t('Submit'),
-       ]);
-
-       return $o;
-
-}
index 9a24c55544199635cde4a956577070491ce6519f..33a9b2fc2f33d91d0a2754f38448f15999322072 100644 (file)
@@ -7,7 +7,10 @@ use Friendica\BaseObject;
 use Friendica\Core;
 use Friendica\LegacyModule;
 use Friendica\Module\Home;
-use Friendica\Module\PageNotFound;
+use Friendica\Module\HTTPException\MethodNotAllowed;
+use Friendica\Module\HTTPException\PageNotFound;
+use Friendica\Network\HTTPException\MethodNotAllowedException;
+use Friendica\Network\HTTPException\NotFoundException;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -144,38 +147,43 @@ class Module
        {
                $printNotAllowedAddon = false;
 
+               $module_class = null;
                /**
                 * ROUTING
                 *
                 * From the request URL, routing consists of obtaining the name of a BaseModule-extending class of which the
                 * post() and/or content() static methods can be respectively called to produce a data change or an output.
                 **/
-               $module_class = $router->getModuleClass($args->getCommand());
-
-               // Then we try addon-provided modules that we wrap in the LegacyModule class
-               if (!$module_class && Core\Addon::isEnabled($this->module) && file_exists("addon/{$this->module}/{$this->module}.php")) {
-                       //Check if module is an app and if public access to apps is allowed or not
-                       $privateapps = $config->get('config', 'private_addons', false);
-                       if ((!local_user()) && Core\Hook::isAddonApp($this->module) && $privateapps) {
-                               $printNotAllowedAddon = true;
-                       } else {
-                               include_once "addon/{$this->module}/{$this->module}.php";
-                               if (function_exists($this->module . '_module')) {
-                                       LegacyModule::setModuleFile("addon/{$this->module}/{$this->module}.php");
-                                       $module_class = LegacyModule::class;
+               try {
+                       $module_class = $router->getModuleClass($args->getCommand());
+               } catch (MethodNotAllowedException $e) {
+                       $module_class = MethodNotAllowed::class;
+               } catch (NotFoundException $e) {
+                       // Then we try addon-provided modules that we wrap in the LegacyModule class
+                       if (Core\Addon::isEnabled($this->module) && file_exists("addon/{$this->module}/{$this->module}.php")) {
+                               //Check if module is an app and if public access to apps is allowed or not
+                               $privateapps = $config->get('config', 'private_addons', false);
+                               if ((!local_user()) && Core\Hook::isAddonApp($this->module) && $privateapps) {
+                                       $printNotAllowedAddon = true;
+                               } else {
+                                       include_once "addon/{$this->module}/{$this->module}.php";
+                                       if (function_exists($this->module . '_module')) {
+                                               LegacyModule::setModuleFile("addon/{$this->module}/{$this->module}.php");
+                                               $module_class = LegacyModule::class;
+                                       }
                                }
                        }
-               }
 
-               /* Finally, we look for a 'standard' program module in the 'mod' directory
-                * We emulate a Module class through the LegacyModule class
-                */
-               if (!$module_class && file_exists("mod/{$this->module}.php")) {
-                       LegacyModule::setModuleFile("mod/{$this->module}.php");
-                       $module_class = LegacyModule::class;
-               }
+                       /* Finally, we look for a 'standard' program module in the 'mod' directory
+                        * We emulate a Module class through the LegacyModule class
+                        */
+                       if (!$module_class && file_exists("mod/{$this->module}.php")) {
+                               LegacyModule::setModuleFile("mod/{$this->module}.php");
+                               $module_class = LegacyModule::class;
+                       }
 
-               $module_class = !isset($module_class) ? PageNotFound::class : $module_class;
+                       $module_class = $module_class ?: PageNotFound::class;
+               }
 
                return new Module($this->module, $module_class, $this->isBackend, $printNotAllowedAddon);
        }
index 1bdfdcab1d0fac735d338c8fba7baa0e7def8dd6..f723321ac67cf883bfe8a2ab93c26c5e77c78b7c 100644 (file)
@@ -8,7 +8,8 @@ use FastRoute\Dispatcher;
 use FastRoute\RouteCollector;
 use FastRoute\RouteParser\Std;
 use Friendica\Core\Hook;
-use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Core\L10n;
+use Friendica\Network\HTTPException;
 
 /**
  * Wrapper for FastRoute\Router
@@ -57,7 +58,7 @@ class Router
         *
         * @return self The router instance with the loaded routes
         *
-        * @throws InternalServerErrorException In case of invalid configs
+        * @throws HTTPException\InternalServerErrorException In case of invalid configs
         */
        public function addRoutes(array $routes)
        {
@@ -71,7 +72,7 @@ class Router
                        } elseif ($this->isRoute($config)) {
                                $routeCollector->addRoute($config[1], $route, $config[0]);
                        } else {
-                               throw new InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
+                               throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
                        }
                }
 
@@ -96,7 +97,7 @@ class Router
                                } elseif ($this->isRoute($config)) {
                                        $routeCollector->addRoute($config[1], $route, $config[0]);
                                }else {
-                                       throw new InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
+                                       throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
                                }
                        }
                });
@@ -155,7 +156,11 @@ class Router
         *
         * @param string $cmd The path component of the request URL without the query string
         *
-        * @return string|null A Friendica\BaseModule-extending class name if a route rule matched
+        * @return string A Friendica\BaseModule-extending class name if a route rule matched
+        *
+        * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\MethodNotAllowedException    If a rule matched but the method didn't
+        * @throws HTTPException\NotFoundException            If no rule matched
         */
        public function getModuleClass($cmd)
        {
@@ -171,6 +176,10 @@ class Router
                $routeInfo  = $dispatcher->dispatch($this->httpMethod, $cmd);
                if ($routeInfo[0] === Dispatcher::FOUND) {
                        $moduleClass = $routeInfo[1];
+               } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) {
+                       throw new HTTPException\MethodNotAllowedException(L10n::t('Method not allowed for this module. Allowed method(s): %s', implode(', ', $routeInfo[1])));
+               } else {
+                       throw new HTTPException\NotFoundException(L10n::t('Page not found.'));
                }
 
                return $moduleClass;
index e81214cee062b196ca0e244804549ade1d144eae..ff1680ab3f0a52445ff8a8444fa339dc78d74093 100644 (file)
@@ -29,7 +29,7 @@ class Nav
                'directory' => null,
                'settings'  => null,
                'contacts'  => null,
-               'manage'    => null,
+               'delegation'=> null,
                'events'    => null,
                'register'  => null
        ];
@@ -257,11 +257,9 @@ class Nav
                        $nav['messages']['new'] = ['message/new', L10n::t('New Message'), '', L10n::t('New Message')];
 
                        if (is_array($a->identities) && count($a->identities) > 1) {
-                               $nav['manage'] = ['manage', L10n::t('Manage'), '', L10n::t('Manage other pages')];
+                               $nav['delegation'] = ['delegation', L10n::t('Delegation'), '', L10n::t('Manage other pages')];
                        }
 
-                       $nav['delegations'] = ['settings/delegation', L10n::t('Delegations'), '', L10n::t('Delegate Page Management')];
-
                        $nav['settings'] = ['settings', L10n::t('Settings'), '', L10n::t('Account settings')];
 
                        if (Feature::isEnabled(local_user(), 'multi_profiles')) {
index c5f9986f1fb55c0137148473c042f5ea4422fab2..760247f2cb6bd22dce37535f08ea5a9b686adb87 100644 (file)
@@ -38,7 +38,7 @@ class BBCode extends BaseObject
         *
         * @param string $body Message body
         * @return array
-        *                     'type' -> Message type ("link", "video", "photo")
+        *                     'type' -> Message type ('link', 'video', 'photo')
         *                     'text' -> Text before the shared message
         *                     'after' -> Text after the shared message
         *                     'image' -> Preview image of the message
@@ -56,19 +56,19 @@ class BBCode extends BaseObject
 
                if (preg_match_all("(\[class=(.*?)\](.*?)\[\/class\])ism", $body, $attached, PREG_SET_ORDER)) {
                        foreach ($attached as $data) {
-                               if (!in_array($data[1], ["type-link", "type-video", "type-photo"])) {
+                               if (!in_array($data[1], ['type-link', 'type-video', 'type-photo'])) {
                                        continue;
                                }
 
-                               $post["type"] = substr($data[1], 5);
+                               $post['type'] = substr($data[1], 5);
 
                                $pos = strpos($body, $data[0]);
                                if ($pos > 0) {
-                                       $post["text"] = trim(substr($body, 0, $pos));
-                                       $post["after"] = trim(substr($body, $pos + strlen($data[0])));
+                                       $post['text'] = trim(substr($body, 0, $pos));
+                                       $post['after'] = trim(substr($body, $pos + strlen($data[0])));
                                } else {
-                                       $post["text"] = trim(str_replace($data[0], "", $body));
-                                       $post["after"] = '';
+                                       $post['text'] = trim(str_replace($data[0], '', $body));
+                                       $post['after'] = '';
                                }
 
                                $attacheddata = $data[2];
@@ -79,25 +79,25 @@ class BBCode extends BaseObject
 
                                        if ($picturedata) {
                                                if (($picturedata[0] >= 500) && ($picturedata[0] >= $picturedata[1])) {
-                                                       $post["image"] = $matches[1];
+                                                       $post['image'] = $matches[1];
                                                } else {
-                                                       $post["preview"] = $matches[1];
+                                                       $post['preview'] = $matches[1];
                                                }
                                        }
                                }
 
                                if (preg_match("/\[bookmark\=(.*?)\](.*?)\[\/bookmark\]/ism", $attacheddata, $matches)) {
-                                       $post["url"] = $matches[1];
-                                       $post["title"] = $matches[2];
+                                       $post['url'] = $matches[1];
+                                       $post['title'] = $matches[2];
                                }
-                               if (!empty($post["url"]) && (in_array($post["type"], ["link", "video"]))
+                               if (!empty($post['url']) && (in_array($post['type'], ['link', 'video']))
                                        && preg_match("/\[url\=(.*?)\](.*?)\[\/url\]/ism", $attacheddata, $matches)) {
-                                       $post["url"] = $matches[1];
+                                       $post['url'] = $matches[1];
                                }
 
                                // Search for description
                                if (preg_match("/\[quote\](.*?)\[\/quote\]/ism", $attacheddata, $matches)) {
-                                       $post["description"] = $matches[1];
+                                       $post['description'] = $matches[1];
                                }
                        }
                }
@@ -109,7 +109,7 @@ class BBCode extends BaseObject
         *
         * @param string $body Message body
         * @return array
-        *                     'type' -> Message type ("link", "video", "photo")
+        *                     'type' -> Message type ('link', 'video', 'photo')
         *                     'text' -> Text before the shared message
         *                     'after' -> Text after the shared message
         *                     'image' -> Preview image of the message
@@ -136,9 +136,9 @@ class BBCode extends BaseObject
 
                $attributes = $match[2];
 
-               $data["text"] = trim($match[1]);
+               $data['text'] = trim($match[1]);
 
-               $type = "";
+               $type = '';
                preg_match("/type='(.*?)'/ism", $attributes, $matches);
                if (!empty($matches[1])) {
                        $type = strtolower($matches[1]);
@@ -149,19 +149,19 @@ class BBCode extends BaseObject
                        $type = strtolower($matches[1]);
                }
 
-               if ($type == "") {
+               if ($type == '') {
                        return [];
                }
 
-               if (!in_array($type, ["link", "audio", "photo", "video"])) {
+               if (!in_array($type, ['link', 'audio', 'photo', 'video'])) {
                        return [];
                }
 
-               if ($type != "") {
-                       $data["type"] = $type;
+               if ($type != '') {
+                       $data['type'] = $type;
                }
 
-               $url = "";
+               $url = '';
                preg_match("/url='(.*?)'/ism", $attributes, $matches);
                if (!empty($matches[1])) {
                        $url = $matches[1];
@@ -172,11 +172,11 @@ class BBCode extends BaseObject
                        $url = $matches[1];
                }
 
-               if ($url != "") {
-                       $data["url"] = html_entity_decode($url, ENT_QUOTES, 'UTF-8');
+               if ($url != '') {
+                       $data['url'] = html_entity_decode($url, ENT_QUOTES, 'UTF-8');
                }
 
-               $title = "";
+               $title = '';
                preg_match("/title='(.*?)'/ism", $attributes, $matches);
                if (!empty($matches[1])) {
                        $title = $matches[1];
@@ -187,14 +187,14 @@ class BBCode extends BaseObject
                        $title = $matches[1];
                }
 
-               if ($title != "") {
+               if ($title != '') {
                        $title = self::convert(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, true);
                        $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
-                       $title = str_replace(["[", "]"], ["&#91;", "&#93;"], $title);
-                       $data["title"] = $title;
+                       $title = str_replace(['[', ']'], ['&#91;', '&#93;'], $title);
+                       $data['title'] = $title;
                }
 
-               $image = "";
+               $image = '';
                preg_match("/image='(.*?)'/ism", $attributes, $matches);
                if (!empty($matches[1])) {
                        $image = $matches[1];
@@ -205,11 +205,11 @@ class BBCode extends BaseObject
                        $image = $matches[1];
                }
 
-               if ($image != "") {
-                       $data["image"] = html_entity_decode($image, ENT_QUOTES, 'UTF-8');
+               if ($image != '') {
+                       $data['image'] = html_entity_decode($image, ENT_QUOTES, 'UTF-8');
                }
 
-               $preview = "";
+               $preview = '';
                preg_match("/preview='(.*?)'/ism", $attributes, $matches);
                if (!empty($matches[1])) {
                        $preview = $matches[1];
@@ -220,13 +220,13 @@ class BBCode extends BaseObject
                        $preview = $matches[1];
                }
 
-               if ($preview != "") {
-                       $data["preview"] = html_entity_decode($preview, ENT_QUOTES, 'UTF-8');
+               if ($preview != '') {
+                       $data['preview'] = html_entity_decode($preview, ENT_QUOTES, 'UTF-8');
                }
 
-               $data["description"] = trim($match[3]);
+               $data['description'] = trim($match[3]);
 
-               $data["after"] = trim($match[4]);
+               $data['after'] = trim($match[4]);
 
                return $data;
        }
@@ -268,11 +268,11 @@ class BBCode extends BaseObject
                }
 
                // if nothing is found, it maybe having an image.
-               if (!isset($post["type"])) {
+               if (!isset($post['type'])) {
                        // Simplify image codes
                        $body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body);
                        $body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body);
-                       $post["text"] = $body;
+                       $post['text'] = $body;
 
                        if (preg_match_all("(\[url=(.*?)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) {
                                if ((count($pictures) == 1) && !$has_title) {
@@ -288,75 +288,75 @@ class BBCode extends BaseObject
                                        // Workaround:
                                        // Sometimes photo posts to the own album are not detected at the start.
                                        // So we seem to cannot use the cache for these cases. That's strange.
-                                       if (($data["type"] != "photo") && strstr($pictures[0][1], "/photos/")) {
+                                       if (($data['type'] != 'photo') && strstr($pictures[0][1], "/photos/")) {
                                                $data = ParseUrl::getSiteinfo($pictures[0][1], true);
                                        }
 
-                                       if ($data["type"] == "photo") {
-                                               $post["type"] = "photo";
-                                               if (isset($data["images"][0])) {
-                                                       $post["image"] = $data["images"][0]["src"];
-                                                       $post["url"] = $data["url"];
+                                       if ($data['type'] == 'photo') {
+                                               $post['type'] = 'photo';
+                                               if (isset($data['images'][0])) {
+                                                       $post['image'] = $data['images'][0]['src'];
+                                                       $post['url'] = $data['url'];
                                                } else {
-                                                       $post["image"] = $data["url"];
+                                                       $post['image'] = $data['url'];
                                                }
 
-                                               $post["preview"] = $pictures[0][2];
-                                               $post["text"] = trim(str_replace($pictures[0][0], "", $body));
+                                               $post['preview'] = $pictures[0][2];
+                                               $post['text'] = trim(str_replace($pictures[0][0], '', $body));
                                        } else {
                                                $imgdata = Image::getInfoFromURL($pictures[0][1]);
-                                               if ($imgdata && substr($imgdata["mime"], 0, 6) == "image/") {
-                                                       $post["type"] = "photo";
-                                                       $post["image"] = $pictures[0][1];
-                                                       $post["preview"] = $pictures[0][2];
-                                                       $post["text"] = trim(str_replace($pictures[0][0], "", $body));
+                                               if ($imgdata && substr($imgdata['mime'], 0, 6) == 'image/') {
+                                                       $post['type'] = 'photo';
+                                                       $post['image'] = $pictures[0][1];
+                                                       $post['preview'] = $pictures[0][2];
+                                                       $post['text'] = trim(str_replace($pictures[0][0], '', $body));
                                                }
                                        }
                                } elseif (count($pictures) > 0) {
-                                       $post["type"] = "link";
-                                       $post["url"] = $plink;
-                                       $post["image"] = $pictures[0][2];
-                                       $post["text"] = $body;
+                                       $post['type'] = 'link';
+                                       $post['url'] = $plink;
+                                       $post['image'] = $pictures[0][2];
+                                       $post['text'] = $body;
 
                                        foreach ($pictures as $picture) {
-                                               $post["text"] = trim(str_replace($picture[0], "", $post["text"]));
+                                               $post['text'] = trim(str_replace($picture[0], '', $post['text']));
                                        }
                                }
                        } elseif (preg_match_all("(\[img\](.*?)\[\/img\])ism", $body, $pictures, PREG_SET_ORDER)) {
                                if ((count($pictures) == 1) && !$has_title) {
-                                       $post["type"] = "photo";
-                                       $post["image"] = $pictures[0][1];
-                                       $post["text"] = str_replace($pictures[0][0], "", $body);
+                                       $post['type'] = 'photo';
+                                       $post['image'] = $pictures[0][1];
+                                       $post['text'] = str_replace($pictures[0][0], '', $body);
                                } elseif (count($pictures) > 0) {
-                                       $post["type"] = "link";
-                                       $post["url"] = $plink;
-                                       $post["image"] = $pictures[0][1];
-                                       $post["text"] = $body;
+                                       $post['type'] = 'link';
+                                       $post['url'] = $plink;
+                                       $post['image'] = $pictures[0][1];
+                                       $post['text'] = $body;
 
                                        foreach ($pictures as $picture) {
-                                               $post["text"] = trim(str_replace($picture[0], "", $post["text"]));
+                                               $post['text'] = trim(str_replace($picture[0], '', $post['text']));
                                        }
                                }
                        }
 
                        // Test for the external links
-                       preg_match_all("(\[url\](.*?)\[\/url\])ism", $post["text"], $links1, PREG_SET_ORDER);
-                       preg_match_all("(\[url\=(.*?)\].*?\[\/url\])ism", $post["text"], $links2, PREG_SET_ORDER);
+                       preg_match_all("(\[url\](.*?)\[\/url\])ism", $post['text'], $links1, PREG_SET_ORDER);
+                       preg_match_all("(\[url\=(.*?)\].*?\[\/url\])ism", $post['text'], $links2, PREG_SET_ORDER);
 
                        $links = array_merge($links1, $links2);
 
                        // If there is only a single one, then use it.
                        // This should cover link posts via API.
-                       if ((count($links) == 1) && !isset($post["preview"]) && !$has_title) {
-                               $post["type"] = "link";
-                               $post["url"] = $links[0][1];
+                       if ((count($links) == 1) && !isset($post['preview']) && !$has_title) {
+                               $post['type'] = 'link';
+                               $post['url'] = $links[0][1];
                        }
 
                        // Now count the number of external media links
-                       preg_match_all("(\[vimeo\](.*?)\[\/vimeo\])ism", $post["text"], $links1, PREG_SET_ORDER);
-                       preg_match_all("(\[youtube\\](.*?)\[\/youtube\\])ism", $post["text"], $links2, PREG_SET_ORDER);
-                       preg_match_all("(\[video\\](.*?)\[\/video\\])ism", $post["text"], $links3, PREG_SET_ORDER);
-                       preg_match_all("(\[audio\\](.*?)\[\/audio\\])ism", $post["text"], $links4, PREG_SET_ORDER);
+                       preg_match_all("(\[vimeo\](.*?)\[\/vimeo\])ism", $post['text'], $links1, PREG_SET_ORDER);
+                       preg_match_all("(\[youtube\\](.*?)\[\/youtube\\])ism", $post['text'], $links2, PREG_SET_ORDER);
+                       preg_match_all("(\[video\\](.*?)\[\/video\\])ism", $post['text'], $links3, PREG_SET_ORDER);
+                       preg_match_all("(\[audio\\](.*?)\[\/audio\\])ism", $post['text'], $links4, PREG_SET_ORDER);
 
                        // Add them to the other external links
                        $links = array_merge($links, $links1, $links2, $links3, $links4);
@@ -364,19 +364,19 @@ class BBCode extends BaseObject
                        // Are there more than one?
                        if (count($links) > 1) {
                                // The post will be the type "text", which means a blog post
-                               unset($post["type"]);
-                               $post["url"] = $plink;
+                               unset($post['type']);
+                               $post['url'] = $plink;
                        }
 
-                       if (!isset($post["type"])) {
-                               $post["type"] = "text";
-                               $post["text"] = trim($body);
+                       if (!isset($post['type'])) {
+                               $post['type'] = "text";
+                               $post['text'] = trim($body);
                        }
-               } elseif (isset($post["url"]) && ($post["type"] == "video")) {
-                       $data = ParseUrl::getSiteinfoCached($post["url"], true);
+               } elseif (isset($post['url']) && ($post['type'] == 'video')) {
+                       $data = ParseUrl::getSiteinfoCached($post['url'], true);
 
-                       if (isset($data["images"][0])) {
-                               $post["image"] = $data["images"][0]["src"];
+                       if (isset($data['images'][0])) {
+                               $post['image'] = $data['images'][0]['src'];
                        }
                }
 
@@ -581,27 +581,27 @@ class BBCode extends BaseObject
        private static function convertAttachment($return, $simplehtml = false, $tryoembed = true)
        {
                $data = self::getAttachmentData($return);
-               if (empty($data) || empty($data["url"])) {
+               if (empty($data) || empty($data['url'])) {
                        return $return;
                }
 
-               if (isset($data["title"])) {
-                       $data["title"] = strip_tags($data["title"]);
-                       $data["title"] = str_replace(["http://", "https://"], "", $data["title"]);
+               if (isset($data['title'])) {
+                       $data['title'] = strip_tags($data['title']);
+                       $data['title'] = str_replace(['http://', 'https://'], '', $data['title']);
                } else {
-                       $data["title"] = null;
+                       $data['title'] = null;
                }
 
-               if (((strpos($data["text"], "[img=") !== false) || (strpos($data["text"], "[img]") !== false) || Config::get('system', 'always_show_preview')) && !empty($data["image"])) {
-                       $data["preview"] = $data["image"];
-                       $data["image"] = "";
+               if (((strpos($data['text'], "[img=") !== false) || (strpos($data['text'], "[img]") !== false) || Config::get('system', 'always_show_preview')) && !empty($data['image'])) {
+                       $data['preview'] = $data['image'];
+                       $data['image'] = '';
                }
 
                $return = '';
                if (in_array($simplehtml, [7, 9])) {
-                       $return = self::convertUrlForOStatus($data["url"]);
+                       $return = self::convertUrlForActivityPub($data['url']);
                } elseif (($simplehtml != 4) && ($simplehtml != 0)) {
-                       $return = sprintf('<a href="%s" target="_blank">%s</a><br>', $data["url"], $data["title"]);
+                       $return = sprintf('<a href="%s" target="_blank">%s</a><br>', $data['url'], $data['title']);
                } else {
                        try {
                                if ($tryoembed && OEmbed::isAllowedURL($data['url'])) {
@@ -610,28 +610,28 @@ class BBCode extends BaseObject
                                        throw new Exception('OEmbed is disabled for this attachment.');
                                }
                        } catch (Exception $e) {
-                               $data["title"] = defaults($data, 'title', $data['url']);
+                               $data['title'] = defaults($data, 'title', $data['url']);
 
                                if ($simplehtml != 4) {
-                                       $return = sprintf('<div class="type-%s">', $data["type"]);
+                                       $return = sprintf('<div class="type-%s">', $data['type']);
                                }
 
                                if (!empty($data['title']) && !empty($data['url'])) {
-                                       if (!empty($data["image"]) && empty($data["text"]) && ($data["type"] == "photo")) {
-                                               $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a>', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
+                                       if (!empty($data['image']) && empty($data['text']) && ($data['type'] == 'photo')) {
+                                               $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a>', $data['url'], self::proxyUrl($data['image'], $simplehtml), $data['title']);
                                        } else {
-                                               if (!empty($data["image"])) {
-                                                       $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
-                                               } elseif (!empty($data["preview"])) {
-                                                       $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $data["url"], self::proxyUrl($data["preview"], $simplehtml), $data["title"]);
+                                               if (!empty($data['image'])) {
+                                                       $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $data['url'], self::proxyUrl($data['image'], $simplehtml), $data['title']);
+                                               } elseif (!empty($data['preview'])) {
+                                                       $return .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $data['url'], self::proxyUrl($data['preview'], $simplehtml), $data['title']);
                                                }
                                                $return .= sprintf('<h4><a href="%s">%s</a></h4>', $data['url'], $data['title']);
                                        }
                                }
 
-                               if (!empty($data["description"]) && $data["description"] != $data["title"]) {
+                               if (!empty($data['description']) && $data['description'] != $data['title']) {
                                        // Sanitize the HTML by converting it to BBCode
-                                       $bbcode = HTML::toBBCode($data["description"]);
+                                       $bbcode = HTML::toBBCode($data['description']);
                                        $return .= sprintf('<blockquote>%s</blockquote>', trim(self::convert($bbcode)));
                                }
 
@@ -655,36 +655,36 @@ class BBCode extends BaseObject
                if (!$data) {
                        return $Text;
                } elseif ($nolink) {
-                       return $data["text"] . defaults($data, 'after', '');
+                       return $data['text'] . defaults($data, 'after', '');
                }
 
                $title = htmlentities(defaults($data, 'title', ''), ENT_QUOTES, 'UTF-8', false);
-               $text = htmlentities($data["text"], ENT_QUOTES, 'UTF-8', false);
-               if ($plaintext || (($title != "") && strstr($text, $title))) {
-                       $data["title"] = $data["url"];
-               } elseif (($text != "") && strstr($title, $text)) {
-                       $data["text"] = $data["title"];
-                       $data["title"] = $data["url"];
+               $text = htmlentities($data['text'], ENT_QUOTES, 'UTF-8', false);
+               if ($plaintext || (($title != '') && strstr($text, $title))) {
+                       $data['title'] = $data['url'];
+               } elseif (($text != '') && strstr($title, $text)) {
+                       $data['text'] = $data['title'];
+                       $data['title'] = $data['url'];
                }
 
-               if (empty($data["text"]) && !empty($data["title"]) && empty($data["url"])) {
-                       return $data["title"] . $data["after"];
+               if (empty($data['text']) && !empty($data['title']) && empty($data['url'])) {
+                       return $data['title'] . $data['after'];
                }
 
                // If the link already is included in the post, don't add it again
-               if (!empty($data["url"]) && strpos($data["text"], $data["url"])) {
-                       return $data["text"] . $data["after"];
+               if (!empty($data['url']) && strpos($data['text'], $data['url'])) {
+                       return $data['text'] . $data['after'];
                }
 
-               $text = $data["text"];
+               $text = $data['text'];
 
-               if (!empty($data["url"]) && !empty($data["title"])) {
-                       $text .= "\n[url=" . $data["url"] . "]" . $data["title"] . "[/url]";
-               } elseif (!empty($data["url"])) {
-                       $text .= "\n[url]" . $data["url"] . "[/url]";
+               if (!empty($data['url']) && !empty($data['title'])) {
+                       $text .= "\n[url=" . $data['url'] . ']' . $data['title'] . '[/url]';
+               } elseif (!empty($data['url'])) {
+                       $text .= "\n[url]" . $data['url'] . '[/url]';
                }
 
-               return $text . "\n" . $data["after"];
+               return $text . "\n" . $data['after'];
        }
 
        /**
@@ -694,7 +694,7 @@ class BBCode extends BaseObject
         * @param array $match Array with the matching values
         * @return string reformatted link including HTML codes
         */
-       private static function convertUrlForOStatusCallback($match)
+       private static function convertUrlForActivityPubCallback($match)
        {
                $url = $match[1];
 
@@ -707,15 +707,26 @@ class BBCode extends BaseObject
                        return $match[0];
                }
 
-               return self::convertUrlForOStatus($url);
+               return self::convertUrlForActivityPub($url);
        }
 
        /**
-        * @brief Converts [url] BBCodes in a format that looks fine on OStatus systems.
+        * @brief Converts [url] BBCodes in a format that looks fine on ActivityPub systems.
         * @param string $url URL that is about to be reformatted
         * @return string reformatted link including HTML codes
         */
-       private static function convertUrlForOStatus($url)
+       private static function convertUrlForActivityPub($url)
+       {
+               $html = '<a href="%s" target="_blank">%s</a>';
+               return sprintf($html, $url, self::getStyledURL($url));
+       }
+
+       /**
+        * Converts an URL in a nicer format (without the scheme and possibly shortened)
+        * @param string $url URL that is about to be reformatted
+        * @return string reformatted link
+        */
+       private static function getStyledURL($url)
        {
                $parts = parse_url($url);
                $scheme = $parts['scheme'] . '://';
@@ -725,9 +736,7 @@ class BBCode extends BaseObject
                        $styled_url = substr($styled_url, 0, 30) . "…";
                }
 
-               $html = '<a href="%s" target="_blank">%s</a>';
-
-               return sprintf($html, $url, $styled_url);
+               return $styled_url;
        }
 
        /*
@@ -1073,10 +1082,10 @@ class BBCode extends BaseObject
 
                        $a->getProfiler()->saveTimestamp($stamp1, "network", System::callstack());
 
-                       if (substr($curl_info["content_type"], 0, 6) == "image/") {
-                               $text = "[url=" . $match[1] . "]" . $match[1] . "[/url]";
+                       if (substr($curl_info['content_type'], 0, 6) == 'image/') {
+                               $text = "[url=" . $match[1] . ']' . $match[1] . "[/url]";
                        } else {
-                               $text = "[url=" . $match[2] . "]" . $match[2] . "[/url]";
+                               $text = "[url=" . $match[2] . ']' . $match[2] . "[/url]";
 
                                // if its not a picture then look if its a page that contains a picture link
                                $body = Network::fetchUrl($match[1]);
@@ -1094,8 +1103,8 @@ class BBCode extends BaseObject
                                                }
                                        }
 
-                                       if (strtolower($attr["name"]) == "twitter:image") {
-                                               $text = "[url=" . $attr["content"] . "]" . $attr["content"] . "[/url]";
+                                       if (strtolower($attr['name']) == 'twitter:image') {
+                                               $text = '[url=' . $attr['content'] . ']' . $attr['content'] . '[/url]';
                                        }
                                }
                        }
@@ -1107,7 +1116,7 @@ class BBCode extends BaseObject
 
        private static function expandLinksCallback($match)
        {
-               if (($match[3] == "") || ($match[2] == $match[3]) || stristr($match[2], $match[3])) {
+               if (($match[3] == '') || ($match[2] == $match[3]) || stristr($match[2], $match[3])) {
                        return ($match[1] . "[url]" . $match[2] . "[/url]");
                } else {
                        return ($match[1] . $match[3] . " [url]" . $match[2] . "[/url]");
@@ -1122,9 +1131,9 @@ class BBCode extends BaseObject
                $own_photo_url = preg_quote(Strings::normaliseLink($a->getBaseURL()) . '/photos/');
                if (preg_match('|' . $own_photo_url . '.*?/image/|', Strings::normaliseLink($match[1]))) {
                        if (!empty($match[3])) {
-                               $text = "[img=" . str_replace('-1.', '-0.', $match[2]) . "]" . $match[3] . "[/img]";
+                               $text = '[img=' . str_replace('-1.', '-0.', $match[2]) . ']' . $match[3] . '[/img]';
                        } else {
-                               $text = "[img]" . str_replace('-1.', '-0.', $match[2]) . "[/img]";
+                               $text = '[img]' . str_replace('-1.', '-0.', $match[2]) . '[/img]';
                        }
                        return $text;
                }
@@ -1148,13 +1157,13 @@ class BBCode extends BaseObject
                $a->getProfiler()->saveTimestamp($stamp1, "network", System::callstack());
 
                // if its a link to a picture then embed this picture
-               if (substr($curl_info["content_type"], 0, 6) == "image/") {
-                       $text = "[img]" . $match[1] . "[/img]";
+               if (substr($curl_info['content_type'], 0, 6) == 'image/') {
+                       $text = '[img]' . $match[1] . '[/img]';
                } else {
                        if (!empty($match[3])) {
-                               $text = "[img=" . $match[2] . "]" . $match[3] . "[/img]";
+                               $text = '[img=' . $match[2] . ']' . $match[3] . '[/img]';
                        } else {
-                               $text = "[img]" . $match[2] . "[/img]";
+                               $text = '[img]' . $match[2] . '[/img]';
                        }
 
                        // if its not a picture then look if its a page that contains a picture link
@@ -1172,11 +1181,11 @@ class BBCode extends BaseObject
                                        }
                                }
 
-                               if (strtolower($attr["name"]) == "twitter:image") {
+                               if (strtolower($attr['name']) == "twitter:image") {
                                        if (!empty($match[3])) {
-                                               $text = "[img=" . $attr["content"] . "]" . $match[3] . "[/img]";
+                                               $text = "[img=" . $attr['content'] . "]" . $match[3] . "[/img]";
                                        } else {
-                                               $text = "[img]" . $attr["content"] . "[/img]";
+                                               $text = "[img]" . $attr['content'] . "[/img]";
                                        }
                                }
                        }
@@ -1333,7 +1342,7 @@ class BBCode extends BaseObject
                $text = str_replace($search, $replace, $text);
 
                // removing multiplicated newlines
-               if (Config::get("system", "remove_multiplicated_lines")) {
+               if (Config::get('system', 'remove_multiplicated_lines')) {
                        $search = ["\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]", "[/li]\n", "\n[li]", "\n[ul]", "[/ul]\n", "\n\n[share ", "[/attachment]\n",
                                        "\n[h1]", "[/h1]\n", "\n[h2]", "[/h2]\n", "\n[h3]", "[/h3]\n", "\n[h4]", "[/h4]\n", "\n[h5]", "[/h5]\n", "\n[h6]", "[/h6]\n"];
                        $replace = ["\n\n", "\n", "\n", "[/quote]\n", "[/quote]", "[/li]", "[li]", "[ul]", "[/ul]", "\n[share ", "[/attachment]",
@@ -1655,8 +1664,8 @@ class BBCode extends BaseObject
 
                if (!$for_plaintext) {
                        if (in_array($simple_html, [7, 9])) {
-                               $text = preg_replace_callback("/\[url\](.*?)\[\/url\]/ism", 'self::convertUrlForOStatusCallback', $text);
-                               $text = preg_replace_callback("/\[url\=(.*?)\](.*?)\[\/url\]/ism", 'self::convertUrlForOStatusCallback', $text);
+                               $text = preg_replace_callback("/\[url\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text);
+                               $text = preg_replace_callback("/\[url\=(.*?)\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text);
                        }
                } else {
                        $text = preg_replace("(\[url\](.*?)\[\/url\])ism", " $1 ", $text);
@@ -1832,7 +1841,7 @@ class BBCode extends BaseObject
                // Clean up the HTML by loading and saving the HTML with the DOM.
                // Bad structured html can break a whole page.
                // For performance reasons do it only with activated item cache or at export.
-               if (!$try_oembed || (get_itemcachepath() != "")) {
+               if (!$try_oembed || (get_itemcachepath() != '')) {
                        $doc = new DOMDocument();
                        $doc->preserveWhiteSpace = false;
 
@@ -1840,10 +1849,10 @@ class BBCode extends BaseObject
 
                        $doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">';
                        $encoding = '<?xml encoding="UTF-8">';
-                       @$doc->loadHTML($encoding.$doctype."<html><body>".$text."</body></html>");
+                       @$doc->loadHTML($encoding . $doctype . '<html><body>' . $text . '</body></html>');
                        $doc->encoding = 'UTF-8';
                        $text = $doc->saveHTML();
-                       $text = str_replace(["<html><body>", "</body></html>", $doctype, $encoding], ["", "", "", ""], $text);
+                       $text = str_replace(['<html><body>', '</body></html>', $doctype, $encoding], ['', '', '', ''], $text);
 
                        $text = str_replace('<br></li>', '</li>', $text);
 
@@ -1883,9 +1892,9 @@ class BBCode extends BaseObject
         * @param string $addon The addon for which the abstract is meant for
         * @return string The abstract
         */
-       public static function getAbstract($text, $addon = "")
+       public static function getAbstract($text, $addon = '')
        {
-               $abstract = "";
+               $abstract = '';
                $abstracts = [];
                $addon = strtolower($addon);
 
@@ -1899,7 +1908,7 @@ class BBCode extends BaseObject
                        $abstract = $abstracts[$addon];
                }
 
-               if ($abstract == "" && preg_match("/\[abstract\](.*?)\[\/abstract\]/ism", $text, $result)) {
+               if ($abstract == '' && preg_match("/\[abstract\](.*?)\[\/abstract\]/ism", $text, $result)) {
                        $abstract = $result[1];
                }
 
@@ -1975,7 +1984,7 @@ class BBCode extends BaseObject
 
                        // Add all tags that maybe were removed
                        if (preg_match_all("/#\[url\=([$url_search_string]*)\](.*?)\[\/url\]/ism", $original_text, $tags)) {
-                               $tagline = "";
+                               $tagline = '';
                                foreach ($tags[2] as $tag) {
                                        $tag = html_entity_decode($tag, ENT_QUOTES, 'UTF-8');
                                        if (!strpos(html_entity_decode($text, ENT_QUOTES, 'UTF-8'), '#' . $tag)) {
@@ -1993,7 +2002,7 @@ class BBCode extends BaseObject
 
                // If a link is followed by a quote then there should be a newline before it
                // Maybe we should make this newline at every time before a quote.
-               $text = str_replace(["</a><blockquote>"], ["</a><br><blockquote>"], $text);
+               $text = str_replace(['</a><blockquote>'], ['</a><br><blockquote>'], $text);
 
                $stamp1 = microtime(true);
 
index ea9a4737cd5bbc3869b7319ccf6a107bf04554e8..549025dec00b4b26c9d6865a5cd133517b206a1d 100644 (file)
@@ -912,7 +912,7 @@ class HTML
                        '$save_label'   => $save_label,
                        '$search_hint'  => L10n::t('@name, !forum, #tags, content'),
                        '$mode'         => $mode,
-                       '$return_url'   => urlencode('search?q=' . $s),
+                       '$return_url'   => urlencode('search?q=' . urlencode($s)),
                ];
 
                if (!$aside) {
index e376485e564adae830ee0e1103d71d1a868fe281..e8d95fa857bf67fae7e990e7cab8a7ac94d2ebd9 100644 (file)
@@ -64,7 +64,6 @@ class Logger extends BaseObject
                self::TRACE => 'Trace',
                self::DEBUG => 'Debug',
                self::DATA => 'Data',
-               self::ALL => 'All',
        ];
 
        /**
index b6121ad04e07c46098f2eeec60b8cf8e17dbf07f..ef49f45edab1012f9873678c473f2137542d960f 100644 (file)
@@ -412,6 +412,7 @@ class User
         *
         * @param string $password
         * @return bool
+        * @throws Exception
         */
        public static function isPasswordExposed($password)
        {
@@ -420,9 +421,20 @@ class User
                        'cacheDirectory' => get_temppath() . '/password-exposed-cache/',
                ]);
 
-               $PasswordExposedCHecker = new PasswordExposed\PasswordExposedChecker(null, $cache);
+               try {
+                       $passwordExposedChecker = new PasswordExposed\PasswordExposedChecker(null, $cache);
+
+                       return $passwordExposedChecker->passwordExposed($password) === PasswordExposed\PasswordStatus::EXPOSED;
+               } catch (\Exception $e) {
+                       Logger::error('Password Exposed Exception: ' . $e->getMessage(), [
+                               'code' => $e->getCode(),
+                               'file' => $e->getFile(),
+                               'line' => $e->getLine(),
+                               'trace' => $e->getTraceAsString()
+                       ]);
 
-               return $PasswordExposedCHecker->passwordExposed($password) === PasswordExposed\PasswordStatus::EXPOSED;
+                       return false;
+               }
        }
 
        /**
diff --git a/src/Module/Delegation.php b/src/Module/Delegation.php
new file mode 100644 (file)
index 0000000..77baefe
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Core\Hook;
+use Friendica\Core\L10n;
+use Friendica\Core\Renderer;
+use Friendica\Core\Session;
+use Friendica\Database\DBA;
+use Friendica\Model\Contact;
+use Friendica\Model\User;
+use Friendica\Network\HTTPException\ForbiddenException;
+
+/**
+ * Switches current user between delegates/parent user
+ */
+class Delegation extends BaseModule
+{
+       public static function post()
+       {
+               if (!local_user()) {
+                       return;
+               }
+
+               $uid = local_user();
+               $orig_record = self::getApp()->user;
+
+               if (Session::get('submanage')) {
+                       $user = User::getById(Session::get('submanage'));
+                       if (DBA::isResult($user)) {
+                               $uid = intval($user['uid']);
+                               $orig_record = $user;
+                       }
+               }
+
+               $identity = intval($_POST['identity'] ?? 0);
+               if (!$identity) {
+                       return;
+               }
+
+               $limited_id = 0;
+               $original_id = $uid;
+
+               $manages = DBA::selectToArray('manage', ['mid'], ['uid' => $uid]);
+               foreach ($manages as $manage) {
+                       if ($identity == $manage['mid']) {
+                               $limited_id = $manage['mid'];
+                               break;
+                       }
+               }
+
+               if ($limited_id) {
+                       $user = User::getById($limited_id);
+               } else {
+                       // Check if the target user is one of our children
+                       $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['uid']]);
+
+                       // Check if the target user is one of our siblings
+                       if (!DBA::isResult($user) && ($orig_record['parent-uid'] != 0)) {
+                               $user = DBA::selectFirst('user', [], ['uid' => $identity, 'parent-uid' => $orig_record['parent-uid']]);
+                       }
+
+                       // Check if it's our parent or our own user
+                       if (!DBA::isResult($user)
+                               && (
+                                       $orig_record['parent-uid'] != 0 && $orig_record['parent-uid'] == $identity
+                                       ||
+                                       $orig_record['uid'] != 0 && $orig_record['uid'] == $identity
+                               )
+                       ) {
+                               $user = User::getById($identity);
+                       }
+               }
+
+               if (!DBA::isResult($user)) {
+                       return;
+               }
+
+               Session::clear();
+
+               Session::setAuthenticatedForUser(self::getApp(), $user, true, true);
+
+               if ($limited_id) {
+                       Session::set('submanage', $original_id);
+               }
+
+               $ret = [];
+               Hook::callAll('home_init', $ret);
+
+               self::getApp()->internalRedirect('profile/' . self::getApp()->user['nickname']);
+               // NOTREACHED
+       }
+
+       public static function content()
+       {
+               if (!local_user()) {
+                       throw new ForbiddenException(L10n::t('Permission denied.'));
+               }
+
+               $identities = self::getApp()->identities;
+
+               //getting additinal information for each identity
+               foreach ($identities as $key => $identity) {
+                       $thumb = Contact::selectFirst(['thumb'], ['uid' => $identity['uid'], 'self' => true]);
+                       if (!DBA::isResult($thumb)) {
+                               continue;
+                       }
+
+                       $identities[$key]['thumb'] = $thumb['thumb'];
+
+                       $identities[$key]['selected'] = ($identity['nickname'] === self::getApp()->user['nickname']);
+
+                       $condition = ["`uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", $identity['uid'], NOTIFY_INTRO, NOTIFY_MAIL];
+                       $params = ['distinct' => true, 'expression' => 'parent'];
+                       $notifications = DBA::count('notify', $condition, $params);
+
+                       $params = ['distinct' => true, 'expression' => 'convid'];
+                       $notifications += DBA::count('mail', ['uid' => $identity['uid'], 'seen' => false], $params);
+
+                       $notifications += DBA::count('intro', ['blocked' => false, 'ignore' => false, 'uid' => $identity['uid']]);
+
+                       $identities[$key]['notifications'] = $notifications;
+               }
+
+               $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('delegation.tpl'), [
+                       '$title'      => L10n::t('Manage Identities and/or Pages'),
+                       '$desc'       => L10n::t('Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'),
+                       '$choose'     => L10n::t('Select an identity to manage: '),
+                       '$identities' => $identities,
+                       '$submit'     => L10n::t('Submit'),
+               ]);
+
+               return $o;
+       }
+}
diff --git a/src/Module/HTTPException/MethodNotAllowed.php b/src/Module/HTTPException/MethodNotAllowed.php
new file mode 100644 (file)
index 0000000..8d2d280
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+namespace Friendica\Module\HTTPException;
+
+use Friendica\BaseModule;
+use Friendica\Core\L10n;
+use Friendica\Network\HTTPException;
+
+class MethodNotAllowed extends BaseModule
+{
+       public static function content()
+       {
+               throw new HTTPException\MethodNotAllowedException(L10n::t('Method Not Allowed.'));
+       }
+}
diff --git a/src/Module/HTTPException/PageNotFound.php b/src/Module/HTTPException/PageNotFound.php
new file mode 100644 (file)
index 0000000..d848905
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+namespace Friendica\Module\HTTPException;
+
+use Friendica\BaseModule;
+use Friendica\Core\L10n;
+use Friendica\Network\HTTPException;
+
+class PageNotFound extends BaseModule
+{
+       public static function content()
+       {
+               throw new HTTPException\NotFoundException(L10n::t('Page not found.'));
+       }
+}
diff --git a/src/Module/PageNotFound.php b/src/Module/PageNotFound.php
deleted file mode 100644 (file)
index 764903c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Friendica\Module;
-
-use Friendica\BaseModule;
-use Friendica\Core\L10n;
-use Friendica\Network\HTTPException;
-
-class PageNotFound extends BaseModule
-{
-       public static function content()
-       {
-               throw new HTTPException\NotFoundException(L10n::t('Page not found.'));
-       }
-}
index 9c0d9e1dfff9cebd5373cc3c2770a21eae729962..73de090a71acb429e32100ff67d66e607e116074 100644 (file)
@@ -63,7 +63,7 @@ class Index extends BaseSearchModule
                }
 
                if (local_user()) {
-                       self::getApp()->page['aside'] .= Widget\SavedSearches::getHTML('search?q=' . $search, $search);
+                       self::getApp()->page['aside'] .= Widget\SavedSearches::getHTML('search?q=' . urlencode($search), $search);
                }
 
                Nav::setSelected('search');
index 772f4782c2cb5850c43c365a6206ed687753d876..9d8d84b55a9bb10337af8801500435e1e36f723a 100644 (file)
@@ -10,17 +10,17 @@ use Friendica\Util\Strings;
 
 class Saved extends BaseModule
 {
-       public static function rawContent()
+       public static function init()
        {
                /** @var Arguments $args */
                $args = self::getClass(Arguments::class);
 
                $action = $args->get(2, 'none');
-               $search = Strings::escapeTags(trim(rawurldecode($args->get(3, ''))));
+               $search = Strings::escapeTags(trim(rawurldecode($_GET['term'] ?? '')));
 
                $return_url = $_GET['return_url'] ?? 'search?q=' . urlencode($search);
 
-               if (local_user()) {
+               if (local_user() && $search) {
                        switch ($action) {
                                case 'add':
                                        $fields = ['uid' => local_user(), 'term' => $search];
index 841fd68f991e01fca0187e4b4b61ea6917128dfa..0601d8e41d1dff48d9245d5dfe107530eef92d42 100644 (file)
@@ -92,6 +92,7 @@ return [
                '/ignored'                => [Module\Contact::class, [R::GET]],
        ],
        '/credits'   => [Module\Credits::class,          [R::GET]],
+       '/delegation'=> [Module\Delegation::class,       [R::GET, R::POST]],
        '/dirfind'   => [Module\Search\Directory::class, [R::GET]],
        '/directory' => [Module\Directory::class,        [R::GET]],
 
@@ -191,8 +192,8 @@ return [
        '/search' => [
                '[/]'                  => [Module\Search\Index::class, [R::GET]],
                '/acl'                 => [Module\Search\Acl::class,   [R::GET, R::POST]],
-               '/saved/add/{term}'    => [Module\Search\Saved::class, [R::GET]],
-               '/saved/remove/{term}' => [Module\Search\Saved::class, [R::GET]],
+               '/saved/add'           => [Module\Search\Saved::class, [R::GET]],
+               '/saved/remove'        => [Module\Search\Saved::class, [R::GET]],
        ],
 
        '/settings' => [
index e43f22d0ceb2d96e3b84990b8dfc82deeaa9b6cd..8327bc706dd479e8d8c4159966f7150c0be67636 100644 (file)
@@ -5,7 +5,7 @@ namespace Friendica\Test\src\App;
 use Friendica\App;
 use Friendica\Core\Config\Configuration;
 use Friendica\LegacyModule;
-use Friendica\Module\PageNotFound;
+use Friendica\Module\HTTPException\PageNotFound;
 use Friendica\Module\WellKnown\HostMeta;
 use Friendica\Test\DatabaseTest;
 
@@ -166,7 +166,7 @@ class ModuleTest extends DatabaseTest
        {
                $module = new App\Module();
 
-               $moduleNew = $module->determineModule(new App\Arguments(), []);
+               $moduleNew = $module->determineModule(new App\Arguments());
 
                $this->assertNotSame($moduleNew, $module);
        }
index 2ed8574c43dd23a0a342cc1ef3b37b4627702146..b2dbaed20c8536440da9fa1626d37353bd8db8fa 100644 (file)
@@ -4,41 +4,127 @@ namespace Friendica\Test\src\App;
 
 use Friendica\App\Router;
 use Friendica\Module;
+use Friendica\Network\HTTPException\MethodNotAllowedException;
+use Friendica\Network\HTTPException\NotFoundException;
 use PHPUnit\Framework\TestCase;
 
 class RouterTest extends TestCase
 {
        public function testGetModuleClass()
        {
-               $router = new Router(['GET']);
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
 
                $routeCollector = $router->getRouteCollector();
-               $routeCollector->addRoute(['GET'], '/', 'IndexModuleClassName');
-               $routeCollector->addRoute(['GET'], '/test', 'TestModuleClassName');
-               $routeCollector->addRoute(['GET'], '/test/sub', 'TestSubModuleClassName');
-               $routeCollector->addRoute(['GET'], '/optional[/option]', 'OptionalModuleClassName');
-               $routeCollector->addRoute(['GET'], '/variable/{var}', 'VariableModuleClassName');
-               $routeCollector->addRoute(['GET'], '/optionalvariable[/{option}]', 'OptionalVariableModuleClassName');
-               $routeCollector->addRoute(['POST', 'PUT', 'PATCH', 'DELETE', 'HEAD'], '/unsupported', 'UnsupportedMethodModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/', 'IndexModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/test', 'TestModuleClassName');
+               $routeCollector->addRoute([Router::GET, Router::POST], '/testgetpost', 'TestGetPostModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/test/sub', 'TestSubModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/optional[/option]', 'OptionalModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/variable/{var}', 'VariableModuleClassName');
+               $routeCollector->addRoute([Router::GET], '/optionalvariable[/{option}]', 'OptionalVariableModuleClassName');
 
                $this->assertEquals('IndexModuleClassName', $router->getModuleClass('/'));
-
                $this->assertEquals('TestModuleClassName', $router->getModuleClass('/test'));
-               $this->assertNull($router->getModuleClass('/tes'));
-
+               $this->assertEquals('TestGetPostModuleClassName', $router->getModuleClass('/testgetpost'));
                $this->assertEquals('TestSubModuleClassName', $router->getModuleClass('/test/sub'));
-
                $this->assertEquals('OptionalModuleClassName', $router->getModuleClass('/optional'));
                $this->assertEquals('OptionalModuleClassName', $router->getModuleClass('/optional/option'));
-               $this->assertNull($router->getModuleClass('/optional/opt'));
-
                $this->assertEquals('VariableModuleClassName', $router->getModuleClass('/variable/123abc'));
-               $this->assertNull($router->getModuleClass('/variable'));
+               $this->assertEquals('OptionalVariableModuleClassName', $router->getModuleClass('/optionalvariable'));
+               $this->assertEquals('OptionalVariableModuleClassName', $router->getModuleClass('/optionalvariable/123abc'));
+       }
 
+       public function testPostModuleClass()
+       {
+               $router = new Router(['REQUEST_METHOD' => Router::POST]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::POST], '/', 'IndexModuleClassName');
+               $routeCollector->addRoute([Router::POST], '/test', 'TestModuleClassName');
+               $routeCollector->addRoute([Router::GET, Router::POST], '/testgetpost', 'TestGetPostModuleClassName');
+               $routeCollector->addRoute([Router::POST], '/test/sub', 'TestSubModuleClassName');
+               $routeCollector->addRoute([Router::POST], '/optional[/option]', 'OptionalModuleClassName');
+               $routeCollector->addRoute([Router::POST], '/variable/{var}', 'VariableModuleClassName');
+               $routeCollector->addRoute([Router::POST], '/optionalvariable[/{option}]', 'OptionalVariableModuleClassName');
+
+               $this->assertEquals('IndexModuleClassName', $router->getModuleClass('/'));
+               $this->assertEquals('TestModuleClassName', $router->getModuleClass('/test'));
+               $this->assertEquals('TestGetPostModuleClassName', $router->getModuleClass('/testgetpost'));
+               $this->assertEquals('TestSubModuleClassName', $router->getModuleClass('/test/sub'));
+               $this->assertEquals('OptionalModuleClassName', $router->getModuleClass('/optional'));
+               $this->assertEquals('OptionalModuleClassName', $router->getModuleClass('/optional/option'));
+               $this->assertEquals('VariableModuleClassName', $router->getModuleClass('/variable/123abc'));
                $this->assertEquals('OptionalVariableModuleClassName', $router->getModuleClass('/optionalvariable'));
                $this->assertEquals('OptionalVariableModuleClassName', $router->getModuleClass('/optionalvariable/123abc'));
+       }
+
+       public function testGetModuleClassNotFound()
+       {
+               $this->expectException(NotFoundException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
+
+               $router->getModuleClass('/unsupported');
+       }
+
+       public function testGetModuleClassNotFoundTypo()
+       {
+               $this->expectException(NotFoundException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::GET], '/test', 'TestModuleClassName');
+
+               $router->getModuleClass('/tes');
+       }
+
+       public function testGetModuleClassNotFoundOptional()
+       {
+               $this->expectException(NotFoundException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::GET], '/optional[/option]', 'OptionalModuleClassName');
+
+               $router->getModuleClass('/optional/opt');
+       }
+
+       public function testGetModuleClassNotFoundVariable()
+       {
+               $this->expectException(NotFoundException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::GET], '/variable/{var}', 'VariableModuleClassName');
+
+               $router->getModuleClass('/variable');
+       }
+
+       public function testGetModuleClassMethodNotAllowed()
+       {
+               $this->expectException(MethodNotAllowedException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::POST]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::GET], '/test', 'TestModuleClassName');
+
+               $router->getModuleClass('/test');
+       }
+       
+       public function testPostModuleClassMethodNotAllowed()
+       {
+               $this->expectException(MethodNotAllowedException::class);
+
+               $router = new Router(['REQUEST_METHOD' => Router::GET]);
+
+               $routeCollector = $router->getRouteCollector();
+               $routeCollector->addRoute([Router::POST], '/test', 'TestModuleClassName');
 
-               $this->assertNull($router->getModuleClass('/unsupported'));
+               $router->getModuleClass('/test');
        }
 
        public function dataRoutes()
@@ -78,7 +164,6 @@ class RouterTest extends TestCase
                $this->assertEquals(Module\Home::class, $router->getModuleClass('/'));
                $this->assertEquals(Module\Friendica::class, $router->getModuleClass('/group/route'));
                $this->assertEquals(Module\Xrd::class, $router->getModuleClass('/group2/group3/route'));
-               $this->assertNull($router->getModuleClass('/post/it'));
                $this->assertEquals(Module\Profile::class, $router->getModuleClass('/double'));
        }
 
@@ -92,9 +177,6 @@ class RouterTest extends TestCase
                ]))->addRoutes($routes);
 
                // Don't find GET
-               $this->assertNull($router->getModuleClass('/'));
-               $this->assertNull($router->getModuleClass('/group/route'));
-               $this->assertNull($router->getModuleClass('/group2/group3/route'));
                $this->assertEquals(Module\NodeInfo::class, $router->getModuleClass('/post/it'));
                $this->assertEquals(Module\Profile::class, $router->getModuleClass('/double'));
        }
index c01856384888418080f483d7faa54f56de1462ca..09493eebad3d1e4066e40358bd66390c214e42b4 100644 (file)
@@ -52,7 +52,6 @@
                        <div class="clear"></div>\
                        <hr class="previewseparator">';
                var text;
-               var urlRegex = /^(?:https?\:\/\/|\s)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})(?:\/+[a-z0-9_.\:\;-]*)*(?:\?[\&\%\|\+a-z0-9_=,\.\:\;-]*)?(?:[\&\%\|\+&a-z0-9_=,\:\;\.-]*)(?:[\!\#\/\&\%\|\+a-z0-9_=,\:\;\.-]*)}*$/i;
                var binurl;
                var block = false;
                var blockTitle = false;
index e2cee43d54464c12b0d07707c208d3ff5a293437..47e7b968d08637d09c459fedd1d048f92f297711 100644 (file)
@@ -86,6 +86,8 @@ var last_popup_menu = null;
 var last_popup_button = null;
 var lockLoadContent = false;
 
+const urlRegex = /^(?:https?:\/\/|\s)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})(?:\/+[a-z0-9_.:;-]*)*(?:\?[&%|+a-z0-9_=,.:;-]*)?(?:[&%|+&a-z0-9_=,:;.-]*)(?:[!#\/&%|+a-z0-9_=,:;.-]*)}*$/i;
+
 $(function() {
        $.ajaxSetup({cache: false});
 
@@ -404,6 +406,61 @@ $(function() {
        }
 });
 
+/**
+ * Inserts a BBCode tag in the comment textarea identified by id
+ *
+ * @param {string} BBCode
+ * @param {int} id
+ * @returns {boolean}
+ */
+function insertFormatting(BBCode, id) {
+       let textarea = document.getElementById('comment-edit-text-' + id);
+
+       if (textarea.value === '') {
+               $(textarea)
+                       .addClass("comment-edit-text-full")
+                       .removeClass("comment-edit-text-empty");
+               closeMenu("comment-fake-form-" + id);
+               openMenu("item-comments-" + id);
+       }
+
+       insertBBCodeInTextarea(BBCode, textarea);
+
+       return true;
+}
+
+/**
+ * Inserts a BBCode tag in the provided textarea element, wrapping the currently selected text.
+ * For URL BBCode, it discriminates between link text and non-link text to determine where to insert the selected text.
+ *
+ * @param {string} BBCode
+ * @param {HTMLTextAreaElement} textarea
+ */
+function insertBBCodeInTextarea(BBCode, textarea) {
+       let selectionStart = textarea.selectionStart;
+       let selectionEnd = textarea.selectionEnd;
+       let selectedText = textarea.value.substring(selectionStart, selectionEnd);
+       let openingTag = '[' + BBCode + ']';
+       let closingTag = '[/' + BBCode + ']';
+       let cursorPosition = selectionStart + openingTag.length + selectedText.length;
+
+       if (BBCode === 'url') {
+               if (urlRegex.test(selectedText)) {
+                       openingTag = '[' + BBCode + '=' + selectedText + ']';
+                       selectedText = '';
+                       cursorPosition = selectionStart + openingTag.length;
+               } else {
+                       openingTag = '[' + BBCode + '=]';
+                       cursorPosition = selectionStart + openingTag.length - 1;
+               }
+       }
+
+       textarea.value = textarea.value.substring(0, selectionStart) + openingTag + selectedText + closingTag + textarea.value.substring(selectionEnd, textarea.value.length);
+       textarea.setSelectionRange(cursorPosition, cursorPosition);
+       textarea.dispatchEvent(new Event('change'));
+       textarea.focus();
+}
+
 function NavUpdate() {
        if (!stopped) {
                var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&f=&uid=' + localUser : '');
diff --git a/view/templates/delegation.tpl b/view/templates/delegation.tpl
new file mode 100644 (file)
index 0000000..0e8e406
--- /dev/null
@@ -0,0 +1,37 @@
+
+<h3>{{$title}}</h3>
+<div id="identity-delegation-desc">{{$desc nofilter}}</div>
+<div id="identity-delegation-choose">{{$choose}}</div>
+
+<div id="identity-selector-wrapper" role="menu">
+       <form action="delegation" method="post">
+
+       {{foreach $identities as $identity}}
+               <div class="itentity-match-wrapper {{if $identity.selected}}selected-identity{{/if}}" id="identity-match-{{$identity.uid}}">
+                       <div class="identity-match-photo" id="identity-match-photo-{{$identity.uid}}">
+                               <button type="submit" name="identity" value="{{$identity.uid}}" title="{{$identity.username}}">
+                                       <img src="{{$identity.thumb}}" alt="{{$identity.username}}" />
+                                       {{if $identity.notifications}}<span class="delegation-notify badge">{{$identity.notifications}}</span>{{/if}}
+                               </button>
+                       </div>
+
+                       <div class="identity-match-break"></div>
+
+                       <div class="identity-match-desc">
+                               <div class="identity-match-name" id="identity-match-name-{{$identity.uid}}">
+                                       {{if $identity.selected}}
+                                               {{$identity.username}}
+                                       {{else}}
+                                               <button type="submit" name="identity" class="btn-link" value="{{$identity.uid}}">{{$identity.username}}</button>
+                                       {{/if}}
+                               </div>
+                               <div class="identity-match-details" id="identity-match-nick-{{$identity.uid}}">({{$identity.nickname}})</div>
+                       </div>
+                       <div class="identity-match-end"></div>
+               </div>
+       {{/foreach}}
+
+       <div class="identity-match-break"></div>
+
+       </form>
+</div>
diff --git a/view/templates/manage.tpl b/view/templates/manage.tpl
deleted file mode 100644 (file)
index d5ea0dc..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<h3>{{$title}}</h3>
-<div id="identity-manage-desc">{{$desc nofilter}}</div>
-<div id="identity-manage-choose">{{$choose}}</div>
-
-<div id="identity-selector-wrapper" role="menu">
-       <form action="manage" method="post" >
-
-       {{foreach $identities as $id}}
-               <div class="itentity-match-wrapper {{if $id.selected}}selected-identity{{/if}}" id="identity-match-{{$id.uid}}">
-                       <div class="identity-match-photo" id="identity-match-photo-{{$id.uid}}">
-                               <button name="identity" value="{{$id.uid}}" onclick="this.form.submit();" title="{{$id.username}}">
-                                       <img src="{{$id.thumb}}" alt="{{$id.username}}" />
-                                       {{if $id.notifications}}<span class="manage-notify badge">{{$id.notifications}}</span>{{/if}}
-                               </button>
-                       </div>
-
-                       <div class="identity-match-break"></div>
-
-                       <div class="identity-match-desc">
-                               <div class="identity-match-name" id="identity-match-name-{{$id.uid}}">
-                                       {{if $id.selected}}{{$id.username}}{{else}}<a role="menuitem" href="manage?identity={{$id.uid}}">{{$id.username}}</a>{{/if}}
-                               </div>
-                               <div class="identity-match-details" id="identity-match-nick-{{$id.uid}}">({{$id.nickname}})</div>
-                       </div>
-                       <div class="identity-match-end"></div>
-               </div>
-       {{/foreach}}
-
-       <div class="identity-match-break"></div>
-
-       </form>
-</div>
index 17a60113ca2e6bbbd33a32c957c4d2ed39d7c848..b9c2cf1f12b195193deea4d02a798b33358c692e 100644 (file)
@@ -44,7 +44,7 @@
 
 
 
-       {{if $nav.manage}}<a id="nav-manage-link" class="nav-commlink {{$nav.manage.2}} {{$sel.manage}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a>{{/if}}
+       {{if $nav.delegation}}<a id="nav-delegation-link" class="nav-commlink {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a>{{/if}}
 
 
                {{if $nav.notifications}}
index d566befba01bfd7ea73a7c316c2f286e1886cb13..8317c59b1d4620d4551a7ba91e9a87462124b8e4 100644 (file)
@@ -11,7 +11,7 @@
     {{/if}}
                <input type="submit" name="submit" id="search-submit" value="{{$search_label}}"/>
     {{if $s}}
-           <a href="search/saved/add/{{$q}}?return_url={{$return_url}}">{{$save_label}}</a>
+           <a href="search/saved/add?term={{$q}}&amp;return_url={{$return_url}}">{{$save_label}}</a>
     {{/if}}
 {{/strip}}
        </form>
index 858e921f78c0b403dd4652893e90df9f8d1d28e3..4e3a80b765ea07a8b1af7c5c00f17ad49f9f06ca 100644 (file)
@@ -6,7 +6,7 @@
        <ul role="menu" id="saved-search-ul">
                {{foreach $saved as $search}}
                <li role="menuitem" class="saved-search-li clear">
-                       <a href="search/saved/remove/{{$search.encodedterm}}?return_url={{$return_url}}" title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" class="iconspacer savedsearchdrop"></a>
+                       <a href="search/saved/remove?term={{$search.encodedterm}}&amp;return_url={{$return_url}}" title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" class="iconspacer savedsearchdrop"></a>
                        <a href="search?q={{$search.encodedterm}}" id="saved-search-term-{{$search.id}}" class="savedsearchterm">{{$search.term}}</a>
                </li>
                {{/foreach}}
index 412899fc77acd66fcc338b5b1dc3c82d108cfc5f..9bad9d3480a97b0400e714fe743d7aa1476a3dae 100644 (file)
@@ -2724,12 +2724,12 @@ aside input[type='text'] {
        margin: 10px;
 }
 
-#identity-manage-desc {
+#identity-delegation-desc {
        margin-top:15px;
        margin-bottom: 15px;
 }
 
-#identity-manage-choose {
+#identity-delegation-choose {
        margin-bottom: 15px;
 }
 
@@ -3382,7 +3382,7 @@ div.jGrowl div.info {
 }
 
 /* notifications popup menu */
-.manage-notify {
+.delegation-notify {
   font-size: 10px;
   padding: 1px 3px;
   top: 0px;
index aac7aaeb24ada5407d232207bc3d7912e23ea9e2..3a0db1264bb3d1c1937fde4759d8b2b30e2cab75 100644 (file)
@@ -62,7 +62,7 @@
        {{if $nav.contacts}}<a id="nav-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a>{{/if}}
 
 
-       {{if $nav.manage}}<a id="nav-manage-link" class="nav-link {{$nav.manage.2}} {{$sel.manage}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a>{{/if}}
+       {{if $nav.delegation}}<a id="nav-delegation-link" class="nav-link {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a>{{/if}}
        </span>
        <span id="nav-end"></span>
        <span id="banner">{{$banner nofilter}}</span>
index 015e8090fc7c655dc182590c7e0ef0028988f632..363f6dc487d7fc883776f5e37b967cb31f6a2a72 100644 (file)
@@ -28,28 +28,6 @@ Renderer::setActiveTemplateEngine('smarty3');
     }
 $a->page['htmlhead'] .= <<< EOT
 <script>
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == "") {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               openMenu("comment-edit-submit-wrapper-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" +id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-       }
-
-       return true;
-}
-
 function cmtBbOpen(comment, id) {
        if ($(comment).hasClass('comment-edit-text-full')) {
                $(".comment-edit-bb-" + id).show();
index 2cfc63d3673b30da5bd13443139e3c0676155611..f1c78abc777b291b9c1799005dff2fb6866b577b 100644 (file)
@@ -2312,7 +2312,7 @@ ul.dropdown-menu li:hover {
 .search-content-wrapper > .section-title-wrapper {
     display: none;
 }
-#navbar-button > #search-save-form > #search-save {
+#navbar-button > #search-save {
     margin-top: 3px;
 }
 /* Section-Content-Wrapper */
@@ -2339,7 +2339,7 @@ ul.dropdown-menu li:hover {
 .generic-page-wrapper, .profile_photo-content-wrapper, .videos-content-wrapper,
  .suggest-content-wrapper, .common-content-wrapper, .help-content-wrapper,
 .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper,
-.manage-content-wrapper, .notes-content-wrapper,
+.delegation-content-wrapper, .notes-content-wrapper,
 .message-content-wrapper, .apps-content-wrapper,
 #adminpage, .delegate-content-wrapper, .uexport-content-wrapper,
 .dfrn_request-content-wrapper,
@@ -3574,7 +3574,7 @@ section .profile-match-wrapper {
                right: 10px;
        }
 
-       .generic-page-wrapper, .profile_photo-content-wrapper, .videos-content-wrapper, .suggest-content-wrapper, .common-content-wrapper, .help-content-wrapper, .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper, .directory-content-wrapper, .manage-content-wrapper, .notes-content-wrapper, .message-content-wrapper, .apps-content-wrapper, #adminpage, .delegate-content-wrapper, .uexport-content-wrapper, .dfrn_request-content-wrapper, .friendica-content-wrapper, .credits-content-wrapper, .nogroup-content-wrapper, .profperm-content-wrapper, .invite-content-wrapper, .tos-content-wrapper, .fsuggest-content-wrapper {
+       .generic-page-wrapper, .profile_photo-content-wrapper, .videos-content-wrapper, .suggest-content-wrapper, .common-content-wrapper, .help-content-wrapper, .allfriends-content-wrapper, .match-content-wrapper, .dirfind-content-wrapper, .directory-content-wrapper, .delegation-content-wrapper, .notes-content-wrapper, .message-content-wrapper, .apps-content-wrapper, #adminpage, .delegate-content-wrapper, .uexport-content-wrapper, .dfrn_request-content-wrapper, .friendica-content-wrapper, .credits-content-wrapper, .nogroup-content-wrapper, .profperm-content-wrapper, .invite-content-wrapper, .tos-content-wrapper, .fsuggest-content-wrapper {
                border-radius: 0;
                padding: 10px;
        }
index 93d7fe8cee5c0a3e81eb10246e7513ab0aea2d64..7ba6a5c0335232dd03b89334cc9febc26e69169a 100644 (file)
@@ -76,45 +76,10 @@ function commentLinkDropper(event) {
        }
 }
 
-
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == '') {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               closeMenu("comment-fake-form-" + id);
-               openMenu("item-comments-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" + id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
-       }
-
-       $(textarea).trigger('change');
-
-       return true;
-}
-
-function insertFormattingToPost(BBcode) {
+function insertFormattingToPost(BBCode) {
        textarea = document.getElementById("profile-jot-text");
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "[" + BBcode + "]" + selected.text + "[/" + BBcode + "]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "[" + BBcode + "]" + textarea.value.substring(start, end) + "[/" + BBcode + "]" + textarea.value.substring(end, textarea.value.length);
-       }
 
-       $(textarea).trigger('change');
+       insertBBCodeInTextarea(BBCode, textarea);
 
        return true;
 }
index 2ab11e637ba8284843476b1f2f6d5a094427c96e..46cea59ba23c60ccefed8efad885d55ae210139d 100644 (file)
@@ -169,7 +169,7 @@ $(document).ready(function(){
        }
 
        // move the "Save the search" button to the second navbar
-       $(".search-content-wrapper #search-save-form ").appendTo("#topbar-second > .container > #navbar-button");
+       $(".search-content-wrapper #search-save").appendTo("#topbar-second > .container > #navbar-button");
 
        // append the vcard-short-info to the second nav after passing the element
        // with .fn (vcard username). Use scrollspy to get the scroll position.
index 4698fb65784493afdc894190aec8f308653e8d28..06b43f6b1584dd4f3c0e8f012517528ac003cd4c 100644 (file)
                                                        <form class="navbar-form" role="search" method="get" action="{{$nav.search.0}}">
                                                                <!-- <img class="hidden-xs" src="{{$nav.userinfo.icon}}" alt="{{$nav.userinfo.name}}" style="max-width:33px; max-height:33px; min-width:33px; min-height:33px; width:33px; height:33px;"> -->
                                                                <div class="form-group form-group-search">
-                                                                       <input accesskey="s" id="nav-search-input-field" class="form-control form-search" type="text" name="search" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$nav.search.1}}">
+                                                                       <input accesskey="s" id="nav-search-input-field" class="form-control form-search" type="text" name="q" data-toggle="tooltip" title="{{$search_hint}}" placeholder="{{$nav.search.1}}">
                                                                        <button class="btn btn-default btn-sm form-button-search" type="submit">{{$nav.search.1}}</button>
                                                                </div>
                                                        </form>
                                                        {{if $nav.contacts}}
                                                        <li role="presentation"><a role="menuitem" id="nav-menu-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}"><i class="fa fa-users fa-fw" aria-hidden="true"></i> {{$nav.contacts.1}}</a><span id="intro-update-li" class="nav-intro-badge badge nav-notify"></span></li>
                                                        {{/if}}
-                                                       {{if $nav.manage}}
-                                                       <li role="presentation"><a role="menuitem" id="nav-manage-link" class="nav-commlink {{$nav.manage.2}} {{$sel.manage}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}"><i class="fa fa-flag fa-fw" aria-hidden="true"></i> {{$nav.manage.1}}</a></li>
+                                                       {{if $nav.delegation}}
+                                                       <li role="presentation"><a role="menuitem" id="nav-delegation-link" class="nav-commlink {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}"><i class="fa fa-flag fa-fw" aria-hidden="true"></i> {{$nav.delegation.1}}</a></li>
                                                        {{/if}}
                                                        <li role="presentation"><a role="menuitem" id="nav-directory-link" class="nav-link {{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}"><i class="fa fa-sitemap fa-fw" aria-hidden="true"></i>{{$nav.directory.1}}</a></li>
                                                        <li role="presentation" class="divider"></li>
                                                        {{if $nav.apps}}
-                                                       <li role="presentation"><a role="menuitem" id="nav-apps-link" class="nav-link {{$nav.apps.2}} {{$sel.manage}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" ><i class="fa fa-puzzle-piece fa-fw" aria-hidden="true"></i> {{$nav.apps.1}}</a>
+                                                       <li role="presentation"><a role="menuitem" id="nav-apps-link" class="nav-link {{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" ><i class="fa fa-puzzle-piece fa-fw" aria-hidden="true"></i> {{$nav.apps.1}}</a>
                                                        <li role="presentation" class="divider"></li>
                                                        {{/if}}
                                                        {{if $nav.help}}
                                                {{if $nav.messages}}
                                                <li role="presentation" class="list-group-item"><a role="menuitem" class="nav-link {{$nav.messages.2}} {{$sel.messages}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" ><i class="fa fa-envelope fa-fw" aria-hidden="true"></i> {{$nav.messages.1}}</a></li>
                                                {{/if}}
-                                               {{if $nav.manage}}
-                                               <li role="presentation" class="list-group-item"><a role="menuitem" class="nav-commlink {{$nav.manage.2}} {{$sel.manage}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}"><i class="fa fa-flag fa-fw" aria-hidden="true"></i> {{$nav.manage.1}}</a></li>
+                                               {{if $nav.delegation}}
+                                               <li role="presentation" class="list-group-item"><a role="menuitem" class="nav-commlink {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}"><i class="fa fa-flag fa-fw" aria-hidden="true"></i> {{$nav.delegation.1}}</a></li>
                                                {{/if}}
                                                {{if $nav.settings}}
                                                <li role="presentation" class="list-group-item"><a role="menuitem" class="nav-link {{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}"><i class="fa fa-cog fa-fw" aria-hidden="true"></i> {{$nav.settings.1}}</a></li>
index bf2ee53040692c297faef77a264d2b39769506fd..ced6fbbd388062f518fd633c4f40f967ffcb2ab1 100644 (file)
@@ -18,7 +18,7 @@ Some parts of this template will be moved by js to other places (see theme.js) -
                                        <div class="col-md-8">
                                                {{* The button to save searches *}}
                                                {{if $s}}
-                                               <a href="search/saved/add/{{$q}}?return_url={{$return_url}}" class="btn btn-primary btn-small pull-right">{{$save_label}}</a>
+                                               <a href="search/saved/add?term={{$q}}&amp;return_url={{$return_url}}" class="btn btn-primary btn-small pull-right">{{$save_label}}</a>
                                                {{/if}}
 
                                                {{* The select popup menu to select what kind of results the user would like to search for *}}
@@ -46,16 +46,13 @@ Some parts of this template will be moved by js to other places (see theme.js) -
        </div>
 
 {{if $s}}
-       <form id="search-save-form" action="search/saved/add/{{$q}}" method="get">
-               <input type="hidden" name="return_url" value="{{$return_url}}">
-               <button class="btn btn-sm btn-main pull-right" type="submit" id="search-save" title="{{$save_label}}" aria-label="{{$save_label}}" value="{{$save_label}}" data-toggle="tooltip">
+       <a href="search/saved/add?term={{$q}}&amp;return_url={{$return_url}}" class="btn btn-sm btn-main pull-right" id="search-save" title="{{$save_label}}" aria-label="{{$save_label}}" value="{{$save_label}}" data-toggle="tooltip">
        {{if $mode == "tag"}}
-                       <i class="fa fa-plus fa-2x" aria-hidden="true"></i>
+               <i class="fa fa-plus fa-2x" aria-hidden="true"></i>
        {{else}}
-                       <i class="fa fa-floppy-o fa-2x" aria-hidden="true"></i>
+               <i class="fa fa-floppy-o fa-2x" aria-hidden="true"></i>
        {{/if}}
-                       <span class="sr-only">{{$save_label}}</span>
-               </button>
-       </form>
+               <span class="sr-only">{{$save_label}}</span>
+       </a>
 {{/if}}
 </div>
index 1553961e1e26b15140fe3bf40cca71454035aa85..1981508cfd2f8a98e403c9da93e4e5d42cd417fe 100644 (file)
@@ -6,7 +6,7 @@
        <ul role="menu" id="saved-search-ul">
                {{foreach $saved as $search}}
                <li role="menuitem" class="saved-search-li clear">
-                       <a href="search/saved/remove/{{$search.encodedterm}}?return_url={{$return_url}}" title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" class="savedsearchdrop pull-right widget-action faded-icon">
+                       <a href="search/saved/remove?term={{$search.encodedterm}}&amp;return_url={{$return_url}}" title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" class="savedsearchdrop pull-right widget-action faded-icon">
                                <i class="fa fa-trash" aria-hidden="true"></i>
                        </a>
                        <a href="search?q={{$search.encodedterm}}" id="saved-search-term-{{$search.id}}" class="savedsearchterm">{{$search.term}}</a>
index bfb078e566bf514f359a19c8ed4b2e00919ce074..6b4d2b880bc715b09ab1a8587971998e69f0ffc8 100644 (file)
@@ -2136,7 +2136,7 @@ ul.tabs li .active {
 .identity-match-photo {
   position: relative;
 }
-.identity-match-photo .manage-notify {
+.identity-match-photo .delegation-notify {
   background-color: #19AEFF;
   border-radius: 5px;
   font-size: 10px;
index 1dce844acd21dc771c6aa39ff48a810d4ae095b7..326a2fbfde9bd1120acaaae083a738ac1551916c 100644 (file)
@@ -2136,7 +2136,7 @@ ul.tabs li .active {
 .identity-match-photo {
   position: relative;
 }
-.identity-match-photo .manage-notify {
+.identity-match-photo .delegation-notify {
   background-color: #19AEFF;
   border-radius: 5px;
   font-size: 10px;
index 5a5390737ffbed4df0cc62a210e58d8f0f348b94..89407569b7f985888eb414b02329c0c6442118a4 100644 (file)
@@ -60,28 +60,6 @@ $(document).ready(function(){
        });
 });
 
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == "") {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               openMenu("comment-edit-submit-wrapper-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" +id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-       }
-
-       return true;
-}
-
 function showThread(id) {
        $("#collapsed-comments-" + id).show()
        $("#collapsed-comments-" + id + " .collapsed-comments").show()
index 870fe6ce23fbaa6e83943b0b84494d3d4129fb85..064b60ba694859e8a18254462a8bf763a067d221 100644 (file)
@@ -2136,7 +2136,7 @@ ul.tabs li .active {
 .identity-match-photo {
   position: relative;
 }
-.identity-match-photo .manage-notify {
+.identity-match-photo .delegation-notify {
   background-color: #19AEFF;
   border-radius: 5px;
   font-size: 10px;
index 415eda83c5214653ab7cefa075294301e2f07271..0c1c21a7b717846183efc5c66dfc7b63df014b7d 100644 (file)
@@ -1419,7 +1419,7 @@ ul.tabs {
 /* manage page */
 .identity-match-photo {
        position: relative;
-       .manage-notify {
+       .delegation-notify {
                background-color: #19AEFF;
                border-radius: 5px;
                font-size: 10px;
index cb5412c161474cfd322f076480a0565d0985134d..c42e570f5dfe08850ce61d6a2f68250f630da248 100644 (file)
@@ -71,7 +71,7 @@
 
                <li id="nav-site-linkmenu" class="nav-menu-icon"><a href="#" rel="#nav-site-menu"><span class="icon s22 gear">Site</span></a>
                        <ul id="nav-site-menu" class="menu-popup">
-                               {{if $nav.manage}}<li><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}}
+                               {{if $nav.delegation}}<li><a class="{{$nav.delegation.2}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a></li>{{/if}}
 
                                {{if $nav.settings}}<li><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}}
                                {{if $nav.admin}}<li><a accesskey="a" class="{{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" >{{$nav.admin.1}}</a></li>{{/if}}
index 69e21c786fe1fc1d163ffb9c47726e511a11d0fb..ce99d521d9dbfac402d6dde76b513769eee156cc 100644 (file)
@@ -5,7 +5,7 @@
         {{foreach $saved as $search}}
                        <li class="tool {{if $search.selected}}selected{{/if}}">
                                <a href="search?q={{$search.encodedterm}}" class="label">{{$search.term}}</a>
-                               <a href="search/saved/remove/{{$search.encodedterm}}?return_url={{$return_url}}" class="action icon s10 delete" title="{{$search.delete}}" onclick="return confirmDelete();"></a>
+                               <a href="search/saved/remove?term={{$search.encodedterm}}&amp;return_url={{$return_url}}" class="action icon s10 delete" title="{{$search.delete}}" onclick="return confirmDelete();"></a>
                        </li>
         {{/foreach}}
        </ul>
index fec5d2bda57889c1d13e8c30062237e8ff94b4c6..edbd705747fe79757d05ae5c035e8acb7c38ba2f 100644 (file)
@@ -4287,7 +4287,7 @@ a.active {
 }
 
 /* notifications popup menu */
-.manage-notify {
+.delegation-notify {
        font-size: 10px;
        padding: 1px 3px;
        top: 0px;
index 3b38eecb56156818bb5aa91bb5635fd3cc75c184..a5c13e0bf434be7b21b1fa6d31514e21ae3492b8 100644 (file)
@@ -1,41 +1,7 @@
 
 <script type="text/javascript" src="{{$baseurl}}/view/theme/smoothly/js/jquery.autogrow.textarea.js"></script>
 <script type="text/javascript">
-$(document).ready(function() {
-
-});
 function tautogrow(id) {
        $("textarea#comment-edit-text-" + id).autogrow();
-};
-
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == "") {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               openMenu("comment-edit-submit-wrapper-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" + id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start)
-                       + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]"
-                       + textarea.value.substring(end, textarea.value.length);
-       }
-
-       return true;
-}
-
-function cmtBbOpen(id) {
-       $(".comment-edit-bb-" + id).show();
-}
-function cmtBbClose(id) {
-    $(".comment-edit-bb-" + id).hide();
 }
 </script>
index 757371677b37668b67529de89e1cca49388ab7f9..a5c16d23f365de92386c9af87922402683ee8c4b 100644 (file)
@@ -45,7 +45,7 @@
                        {{if $nav.profiles}}<li><a id="nav-profiles-link" class="nav-commlink nav-sep {{$nav.profiles.2}}" href="{{$nav.profiles.0}}">{{$nav.profiles.1}}</a></li>{{/if}}
                        {{if $nav.settings}}<li><a id="nav-settings-link" class="nav-commlink {{$nav.settings.2}}" href="{{$nav.settings.0}}">{{$nav.settings.1}}</a></li>{{/if}}
                        
-                       {{if $nav.manage}}<li><a id="nav-manage-link" class="nav-commlink {{$nav.manage.2}}" href="{{$nav.manage.0}}">{{$nav.manage.1}}</a></li>{{/if}}
+                       {{if $nav.delegation}}<li><a id="nav-delegation-link" class="nav-commlink {{$nav.delegation.2}}" href="{{$nav.delegation.0}}">{{$nav.delegation.1}}</a></li>{{/if}}
                
                        {{if $nav.admin}}<li><a id="nav-admin-link" class="nav-commlink {{$nav.admin.2}}" href="{{$nav.admin.0}}">{{$nav.admin.1}}</a></li>{{/if}}
                        
index 9dd958fff40166b8edd94d014923b650e84d09bc..e2289c87be41502af49e07c44ea6b3d24d707c21 100644 (file)
@@ -23,28 +23,6 @@ function smoothly_init(App $a) {
        $a->page['htmlhead'] .= <<< EOT
 
 <script>
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == "") {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               openMenu("comment-edit-submit-wrapper-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" +id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-       }
-
-       return true;
-}
-
 function cmtBbOpen(id) {
        $(".comment-edit-bb-" + id).show();
 }
index a8cf4d2b22b4eb432a098fb0fac1db0ad21ea255..0bf29085315b13f78c6ff553f04655a585070f17 100644 (file)
@@ -17,7 +17,7 @@ nav a:hover,
   color: #000;
 }
 
-.manage-notify {
+.delegation-notify {
   background-color: #CB4437;
   border-radius: 10px;
   font: bold 11px/16px Arial;
index 93c4fcc1c8270b247ca8f25e92e7e9934cee04d7..2be64ed4225582da73ab0bf3dd743d0f8e5015fc 100644 (file)
@@ -54,7 +54,7 @@ nav a:hover,
   color: #000;
 }
 
-.manage-notify {
+.delegation-notify {
   background-color: #CB4437;
   border-radius: 10px;
   font: bold 11px/16px Arial;
index 6506dadc162070b1b7c51785207ca9f0ca15c3be..7596ff5ca3fc6482756254418cd6de10a0a2b0b2 100644 (file)
@@ -725,7 +725,7 @@ nav .nav-menu:hover {
        text-decoration: none;
 }
 
-.manage-notify {
+.delegation-notify {
         background-color: #F80;
        -moz-border-radius: 5px 5px 5px 5px;
        -webkit-border-radius: 5px 5px 5px 5px;
@@ -2923,12 +2923,12 @@ a.mail-list-link {
        margin: 0px;
 }
 
-#identity-manage-desc {
+#identity-delegation-desc {
        margin-top:15px;
        margin-bottom: 15px;
 }
 
-#identity-manage-choose {
+#identity-delegation-choose {
        margin-bottom: 15px;
 }
 
index efc578eb899d35fc4f07ff09c1beb7a75243131d..a10fd0ab3db22f54387603e6fb066ee858508279 100644 (file)
@@ -84,7 +84,7 @@
                                        {{if $nav.introductions}}<li role="menuitem"><a class="{{$nav.introductions.2}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a><span id="intro-update-li" class="nav-notify"></span></li>{{/if}}
                                        {{if $nav.contacts}}<li role="menuitem"><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}}
                                        {{if $nav.messages}}<li role="menuitem"><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}} <span id="mail-update-li" class="nav-notify"></span></a></li>{{/if}}
-                                       {{if $nav.manage}}<li role="menuitem"><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}}
+                                       {{if $nav.delegation}}<li role="menuitem"><a class="{{$nav.delegation.2}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a></li>{{/if}}
                                        {{if $nav.usermenu.1}}<li role="menuitem"><a class="{{$nav.usermenu.1.2}}" href="{{$nav.usermenu.1.0}}" title="{{$nav.usermenu.1.3}}">{{$nav.usermenu.1.1}}</a></li>{{/if}}
                                        {{if $nav.settings}}<li role="menuitem"><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}}
                                        {{if $nav.admin}}
index 3e4a837cd0d74e7db2f69d2443e4ae10d912aa38..f33f3017fb38a3ed0a9c4da619c1d63c41f6a767 100644 (file)
@@ -45,29 +45,6 @@ function vier_init(App $a)
        $a->page['htmlhead'] .= <<< EOT
 <link rel='stylesheet' type='text/css' href='view/theme/vier/narrow.css' media='screen and (max-width: 1100px)' />
 <script type="text/javascript">
-
-function insertFormatting(BBcode, id) {
-       var tmpStr = $("#comment-edit-text-" + id).val();
-       if (tmpStr == "") {
-               $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
-               $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
-               openMenu("comment-edit-submit-wrapper-" + id);
-       }
-
-       textarea = document.getElementById("comment-edit-text-" +id);
-       if (document.selection) {
-               textarea.focus();
-               selected = document.selection.createRange();
-               selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
-       } else if (textarea.selectionStart || textarea.selectionStart == "0") {
-               var start = textarea.selectionStart;
-               var end = textarea.selectionEnd;
-               textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
-       }
-
-       return true;
-}
-
 function showThread(id) {
        $("#collapsed-comments-" + id).show()
        $("#collapsed-comments-" + id + " .collapsed-comments").show()
@@ -104,7 +81,7 @@ EOT;
 
        // Hide the left menu bar
        /// @TODO maybe move this static array out where it should belong?
-       if (empty($a->page['aside']) && in_array($a->argv[0], ["community", "events", "help", "manage", "notifications",
+       if (empty($a->page['aside']) && in_array($a->argv[0], ["community", "events", "help", "delegation", "notifications",
                        "probe", "webfinger", "login", "invite", "credits"])) {
                $a->page['htmlhead'] .= "<link rel='stylesheet' href='view/theme/vier/hide.css' />";
        }