X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FUserFlag%2FUserFlagPlugin.php;h=52b1fc299e320f3f82b64c591679b8f29480a586;hb=b7d07466943a73e1c009467c8daa6e499810080f;hp=a33869c19ea2be076c4db748a100a1fb9e268b3f;hpb=bd6571c2e17939b21e01afd3772acb5cebbbadfe;p=quix0rs-gnu-social.git diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php index a33869c19e..52b1fc299e 100644 --- a/plugins/UserFlag/UserFlagPlugin.php +++ b/plugins/UserFlag/UserFlagPlugin.php @@ -40,7 +40,6 @@ if (!defined('STATUSNET')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class UserFlagPlugin extends Plugin { const REVIEWFLAGS = 'UserFlagPlugin::reviewflags'; @@ -56,7 +55,6 @@ class UserFlagPlugin extends Plugin * * @return boolean hook return */ - function onCheckSchema() { $schema = Schema::get(); @@ -83,12 +81,11 @@ class UserFlagPlugin extends Plugin * * @return boolean hook return */ - function onRouterInitialized($m) { $m->connect('main/flag/profile', array('action' => 'flagprofile')); $m->connect('main/flag/clear', array('action' => 'clearflag')); - $m->connect('admin/profile/flag', array('action' => 'adminprofileflag')); + $m->connect('panel/profile/flag', array('action' => 'adminprofileflag')); return true; } @@ -99,7 +96,6 @@ class UserFlagPlugin extends Plugin * * @return boolean hook return */ - function onAutoload($cls) { switch (strtolower($cls)) @@ -125,31 +121,16 @@ class UserFlagPlugin extends Plugin /** * Add a 'flag' button to profile page * - * @param Action &$action The action being called + * @param Action $action The action being called * @param Profile $profile Profile being shown * * @return boolean hook result */ - - function onEndProfilePageActionsElements(&$action, $profile) + function onEndProfilePageActionsElements($action, $profile) { - $user = common_current_user(); - - if (!empty($user) && ($user->id != $profile->id)) { - - $action->elementStart('li', 'entity_flag'); - - if (User_flag_profile::exists($profile->id, $user->id)) { - $action->element('p', 'flagged', _('Flagged')); - } else { - $form = new FlagProfileForm($action, $profile, - array('action' => 'showstream', - 'nickname' => $profile->nickname)); - $form->show(); - } - - $action->elementEnd('li'); - } + $this->showFlagButton($action, $profile, + array('action' => 'showstream', + 'nickname' => $profile->nickname)); return true; } @@ -161,40 +142,42 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onEndProfileListItemActionElements($item) { - $user = common_current_user(); - - if (!empty($user)) { - - list($action, $args) = $item->action->returnToArgs(); - - $args['action'] = $action; - - $form = new FlagProfileForm($item->action, $item->profile, $args); - - $item->action->elementStart('li', 'entity_flag'); - $form->show(); - $item->action->elementEnd('li'); - } + list($action, $args) = $item->action->returnToArgs(); + $args['action'] = $action; + $this->showFlagButton($item->action, $item->profile, $args); return true; } /** - * Add our plugin's CSS to page output - * - * @param Action $action action being shown + * Actually output a flag button. If the target profile has already been + * flagged by the current user, a null-action faux button is shown. * - * @return boolean hook result + * @param Action $action + * @param Profile $profile + * @param array $returnToArgs */ - - function onEndShowStatusNetStyles($action) + protected function showFlagButton($action, $profile, $returnToArgs) { - $action->cssLink(common_path('plugins/UserFlag/userflag.css'), - null, 'screen, projection, tv'); - return true; + $user = common_current_user(); + + if (!empty($user) && ($user->id != $profile->id)) { + + $action->elementStart('li', 'entity_flag'); + + if (User_flag_profile::exists($profile->id, $user->id)) { + // @todo FIXME: Add a title explaining what 'flagged' means? + // TRANS: Message added to a profile if it has been flagged for review. + $action->element('p', 'flagged', _m('Flagged')); + } else { + $form = new FlagProfileForm($action, $profile, $returnToArgs); + $form->show(); + } + + $action->elementEnd('li'); + } } /** @@ -204,12 +187,11 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onEndShowScripts($action) { $action->inlineScript('if ($(".form_entity_flag").length > 0) { '. - 'SN.U.FormXHR($(".form_entity_flag")); '. - '}'); + '$(".form_entity_flag").bind("click", function() {'. + 'SN.U.FormXHR($(this)); return false; }); }'); return true; } @@ -225,7 +207,6 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onUserRightsCheck($user, $right, &$result) { switch ($right) { @@ -248,7 +229,6 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onEndBlockProfile($user, $profile) { if ($this->flagOnBlock && !User_flag_profile::exists($profile->id, @@ -270,7 +250,6 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onProfileDeleteRelated($profile, &$related) { $related[] = 'user_flag_profile'; @@ -287,10 +266,33 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onUserDeleteRelated($user, &$related) { $related[] = 'user_flag_profile'; return true; } + + /** + * Provide plugin version information. + * + * This data is used when showing the version page. + * + * @param array &$versions array of version data arrays; see EVENTS.txt + * + * @return boolean hook value + */ + function onPluginVersion(&$versions) + { + $url = 'http://status.net/wiki/Plugin:UserFlag'; + + $versions[] = array('name' => 'UserFlag', + 'version' => STATUSNET_VERSION, + 'author' => 'Evan Prodromou', + 'homepage' => $url, + 'rawdescription' => + // TRANS: Plugin description. + _m('This plugin allows flagging of profiles for review and reviewing flagged profiles.')); + + return true; + } }