X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2FMobileProfile%2FMobileProfilePlugin.php;h=c96491d9e997ff208e8263d464b73071fab8439b;hb=6ddd5e1e895af0091a22fe11781cd06783357e89;hp=ec08fa1e2cbf1ee3ad5cc41c0d85883ed0dbb7a5;hpb=59a413cf5e246c33c684b2338ab8443232776b3f;p=quix0rs-gnu-social.git diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index ec08fa1e2c..c96491d9e9 100644 --- a/plugins/MobileProfile/MobileProfilePlugin.php +++ b/plugins/MobileProfile/MobileProfilePlugin.php @@ -27,7 +27,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -49,6 +49,7 @@ class MobileProfilePlugin extends WAP20Plugin { public $DTD = null; public $serveMobile = false; + public $reallyMobile = false; public $mobileFeatures = array(); function __construct($DTD='http://www.wapforum.org/DTD/xhtml-mobile10.dtd') @@ -71,7 +72,7 @@ class MobileProfilePlugin extends WAP20Plugin } else if (isset($_COOKIE['MobileOverride'])) { // Cookie override is controlled by link at bottom. $this->serveMobile = (bool)$_COOKIE['MobileOverride']; - } else { + } elseif (array_key_exists('HTTP_USER_AGENT', $_SERVER)) { // If they like the WAP 2.0 mimetype, serve them MP // @fixme $type is undefined, making this if case useless and spewing errors. // What's the intent? @@ -110,6 +111,7 @@ class MobileProfilePlugin extends WAP20Plugin 'ipod', 'j2me', 'lg', + 'maemo', 'midp-', 'mobile', 'mot', @@ -160,6 +162,7 @@ class MobileProfilePlugin extends WAP20Plugin $this->setMobileFeatures($httpuseragent); $this->serveMobile = true; + $this->reallyMobile = true; break; } } @@ -193,6 +196,7 @@ class MobileProfilePlugin extends WAP20Plugin $type = common_negotiate_type($cp, $sp); if (!$type) { + // TRANS: Client exception thrown when requesting a not supported media type. throw new ClientException(_m('This page is not available in a '. 'media type you accept.'), 406); } @@ -200,21 +204,28 @@ class MobileProfilePlugin extends WAP20Plugin header('Content-Type: '.$type); - $action->extraHeaders(); - if (preg_match("/.*\/.*xml/", $type)) { - // Required for XML documents - $action->xw->startDocument('1.0', 'UTF-8'); - } - $action->xw->writeDTD('html', - '-//WAPFORUM//DTD XHTML Mobile 1.0//EN', - $this->DTD); + if ($this->reallyMobile) { + + $action->extraHeaders(); + if (preg_match("/.*\/.*xml/", $type)) { + // Required for XML documents + $action->startXML(); + } + $action->xw->writeDTD('html', + '-//WAPFORUM//DTD XHTML Mobile 1.0//EN', + $this->DTD); - $language = $action->getLanguage(); + $language = $action->getLanguage(); - $action->elementStart('html', array('xmlns' => 'http://www.w3.org/1999/xhtml', + $action->elementStart('html', array('xmlns' => 'http://www.w3.org/1999/xhtml', 'xml:lang' => $language)); - return false; + return false; + + } else { + return true; + } + } function setMobileFeatures($useragent) @@ -233,7 +244,7 @@ class MobileProfilePlugin extends WAP20Plugin } } - function onStartShowStatusNetStyles($action) + public function onStartShowStylesheets(Action $action) { if (!$this->serveMobile) { return true; @@ -241,21 +252,18 @@ class MobileProfilePlugin extends WAP20Plugin $action->primaryCssLink(); + $action->cssLink($this->path('mp-screen.css'),null,'screen'); if (file_exists(Theme::file('css/mp-screen.css'))) { $action->cssLink('css/mp-screen.css', null, 'screen'); - } else { - $action->cssLink($this->path('mp-screen.css'),null,'screen'); } + $action->cssLink($this->path('mp-handheld.css'),null,'handheld'); if (file_exists(Theme::file('css/mp-handheld.css'))) { $action->cssLink('css/mp-handheld.css', null, 'handheld'); - } else { - $action->cssLink($this->path('mp-handheld.css'),null,'handheld'); } // Allow other plugins to load their styles. - Event::handle('EndShowStatusNetStyles', array($action)); - Event::handle('EndShowLaconicaStyles', array($action)); + Event::handle('EndShowStylesheets', array($action)); return false; } @@ -276,10 +284,7 @@ class MobileProfilePlugin extends WAP20Plugin $action->elementStart('div', array('id' => 'header')); $this->_showLogo($action); - $this->_showPrimaryNav($action); - if (common_logged_in()) { - $action->showNoticeForm(); - } + $action->showPrimaryNav(); $action->elementEnd('div'); return false; @@ -287,105 +292,49 @@ class MobileProfilePlugin extends WAP20Plugin function _showLogo($action) { - $action->elementStart('address', 'vcard'); - $action->elementStart('a', array('class' => 'url home bookmark', - 'href' => common_local_url('public'))); + $action->elementStart('address'); + if (common_config('singleuser', 'enabled')) { + $user = User::singleUser(); + $url = common_local_url('showstream', array('nickname' => $user->getNickname())); + } else { + $url = common_local_url('public'); + } + + $action->elementStart('a', array('class' => 'h-card home bookmark', + 'href' => $url)); + if (common_config('site', 'mobilelogo') || file_exists(Theme::file('logo.png')) || file_exists(Theme::file('mobilelogo.png'))) { - $action->element('img', array('class' => 'photo', + $action->element('img', array('class' => 'u-photo', 'src' => (common_config('site', 'mobilelogo')) ? common_config('site', 'mobilelogo') : ((file_exists(Theme::file('mobilelogo.png'))) ? (Theme::path('mobilelogo.png')) : Theme::path('logo.png')), 'alt' => common_config('site', 'name'))); } - $action->element('span', array('class' => 'fn org'), common_config('site', 'name')); $action->elementEnd('a'); $action->elementEnd('address'); } - function _showPrimaryNav($action) - { - $user = common_current_user(); - $action->elementStart('ul', array('id' => 'site_nav_global_primary')); - if ($user) { - $action->menuItem(common_local_url('all', array('nickname' => $user->nickname)), - _m('Home')); - $action->menuItem(common_local_url('profilesettings'), - _m('Account')); - $action->menuItem(common_local_url('oauthconnectionssettings'), - _m('Connect')); - if ($user->hasRight(Right::CONFIGURESITE)) { - $action->menuItem(common_local_url('siteadminpanel'), - _m('Admin'), _m('Change site configuration'), false, 'nav_admin'); - } - if (common_config('invite', 'enabled')) { - $action->menuItem(common_local_url('invite'), - _m('Invite')); - } - $action->menuItem(common_local_url('logout'), - _m('Logout')); - } else { - if (!common_config('site', 'closed')) { - $action->menuItem(common_local_url('register'), - _m('Register')); - } - $action->menuItem(common_local_url('login'), - _m('Login')); - } - if ($user || !common_config('site', 'private')) { - $action->menuItem(common_local_url('peoplesearch'), - _m('Search')); - } - $action->elementEnd('ul'); - } - - function onStartShowNoticeFormData($form) + function onStartShowAside(Action $action) { - if (!$this->serveMobile) { - return true; - } - - $form->out->element('textarea', array('id' => 'notice_data-text', - 'cols' => 15, - 'rows' => 4, - 'name' => 'status_textarea'), - ($form->content) ? $form->content : ''); - - $contentLimit = Notice::maxContent(); - - if ($contentLimit > 0) { - $form->out->element('div', array('id' => 'notice_text-count'), - $contentLimit); - } - - if (common_config('attachments', 'uploads')) { - if ($this->mobileFeatures['inputfiletype']) { - $form->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota')); - $form->out->element('label', array('for' => 'notice_data-attach'), _m('Attach')); - $form->out->element('input', array('id' => 'notice_data-attach', - 'type' => 'file', - 'name' => 'attach', - 'title' => _m('Attach a file'))); - } - } - if ($form->action) { - $form->out->hidden('notice_return-to', $form->action, 'returnto'); + if ($this->serveMobile) { + return false; } - $form->out->hidden('notice_in-reply-to', $form->inreplyto, 'inreplyto'); - - return false; } - function onStartShowAside($action) + function onStartShowLocalNavBlock(Action $action) { if ($this->serveMobile) { - return false; + // @todo FIXME: "Show Navigation" / "Hide Navigation" needs i18n + $action->element('a', array('href' => '#', 'id' => 'navtoggle'), 'Show Navigation'); + return true; } } - function onEndShowScripts($action) + function onEndShowScripts(Action $action) { + // @todo FIXME: "Show Navigation" / "Hide Navigation" needs i18n $action->inlineScript(' $(function() { $("#mobile-toggle-disable").click(function() { @@ -398,8 +347,24 @@ class MobileProfilePlugin extends WAP20Plugin window.location.reload(); return false; }); + $("#navtoggle").click(function () { + $("#site_nav_local_views").fadeToggle(); + var text = $("#navtoggle").text(); + $("#navtoggle").text( + text == "Show Navigation" ? "Hide Navigation" : "Show Navigation"); + }); });' ); + + if ($this->serveMobile) { + $action->inlineScript(' + $(function() { + $(".checkbox-wrapper").unbind("click"); + });' + ); + } + + } @@ -441,13 +406,14 @@ class MobileProfilePlugin extends WAP20Plugin return $proto.'://'.$serverpart.'/'.$pathpart.$relative; } - function onPluginVersion(&$versions) + function onPluginVersion(array &$versions) { $versions[] = array('name' => 'MobileProfile', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Sarven Capadisli', 'homepage' => 'http://status.net/wiki/Plugin:MobileProfile', 'rawdescription' => + // TRANS: Plugin description. _m('XHTML MobileProfile output for supporting user agents.')); return true; }