*/
class DirectoryPlugin extends Plugin
{
+ private $dir = null;
+
/**
* Initializer for this plugin
*
*/
function onAutoload($cls)
{
- $dir = dirname(__FILE__);
-
// common_debug("class = $cls");
+ $dir = dirname(__FILE__);
+
switch ($cls)
{
case 'UserdirectoryAction':
+ case 'GroupdirectoryAction':
include_once $dir
. '/actions/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
return false;
include_once $dir
. '/lib/' . strtolower($cls) . '.php';
return false;
+ case 'SortableSubscriptionList':
+ case 'SortableGroupList':
+ include_once $dir
+ . '/lib/' . strtolower($cls) . '.php';
+ return false;
default:
return true;
}
*/
function onRouterInitialized($m)
{
+
$m->connect(
- 'main/directory',
- array('action' => 'userdirectory')
+ 'directory/users',
+ array('action' => 'userdirectory'),
+ array('filter' => 'all')
);
+ $m->connect(
+ 'directory/users/:filter',
+ array('action' => 'userdirectory'),
+ array('filter' => '([0-9a-zA-Z_]{1,64}|0-9)')
+ );
+
+ $m->connect(
+ 'groups/:filter',
+ array('action' => 'groupdirectory'),
+ array('filter' => '([0-9a-zA-Z_]{1,64}|0-9)')
+ );
+
+ return true;
+ }
+
+ /**
+ * Hijack the routing (URL -> Action) for the normal directory page
+ * and substitute our group directory action
+ *
+ * @param string $path path to connect
+ * @param array $defaults path defaults
+ * @param array $rules path rules
+ * @param array $result unused
+ *
+ * @return boolean hook return
+ */
+ function onStartConnectPath(&$path, &$defaults, &$rules, &$result)
+ {
+ if (in_array($path, array('group', 'group/', 'groups', 'groups/'))) {
+ $defaults['action'] = 'groupdirectory';
+ return true;
+ }
+ return true;
+ }
+
+ // The following three function are to replace the existing groups
+ // list page with the directory plugin's group directory page
+
+ /**
+ * Hijack the mapping (Action -> URL) and return the URL to our
+ * group directory page instead of the normal groups page
+ *
+ * @param Action $action action to find a path for
+ * @param array $params parameters to pass to the action
+ * @param string $fragment any url fragement
+ * @param boolean $addSession whether to add session variable
+ * @param string $url resulting URL to local resource
+ *
+ * @return string the local URL
+ */
+ function onEndLocalURL(&$action, &$params, &$fragment, &$addSession, &$url) {
+ if (in_array($action, array('group', 'group/', 'groups', 'groups/'))) {
+ $url = common_local_url('groupdirectory');
+ }
+ return true;
+ }
+
+ /**
+ * Link in a styelsheet for the onboarding actions
+ *
+ * @param Action $action Action being shown
+ *
+ * @return boolean hook flag
+ */
+ function onEndShowStatusNetStyles($action)
+ {
+ if (in_array(
+ $action->trimmed('action'),
+ array('userdirectory', 'groupdirectory'))
+ ) {
+ $action->cssLink($this->path('css/directory.css'));
+ }
+
+ return true;
+ }
+
+ /**
+ * Fool the public nav into thinking it's on the regular
+ * group page when it's actually on our injected group
+ * directory page. This way "Groups" gets hilighted when
+ * when we're on the groups directory page.
+ *
+ * @param type $action the current action
+ *
+ * @return boolean hook flag
+ */
+ function onStartPublicGroupNav($action)
+ {
+ if ($action->trimmed('action') == 'groupdirectory') {
+ $action->actionName = 'groups';
+ }
return true;
}
$nav->out->menuItem(
common_local_url('userdirectory'),
- _('Directory'),
- _('User Directory'),
+ // TRANS: Menu item text for user directory.
+ _m('MENU','Directory'),
+ // TRANS: Menu item title for user directory.
+ _m('User Directory.'),
$actionName == 'userdirectory',
'nav_directory'
);
'version' => STATUSNET_VERSION,
'author' => 'Zach Copley',
'homepage' => 'http://status.net/wiki/Plugin:Directory',
+ // TRANS: Plugin description.
'rawdescription' => _m('Add a user directory.')
);