HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.

User Photo Link Instead of Text on Mobile Theme

edited August 2013 in Tutorials

If you want to add the user image instead of text on the menu of the mobile this is what you can do . I added here a couple image links. The Home link which you can change to your home link, and the user image profile link.

Go to your themes folder find mobile, open the class.mobilethemehooks.php

I am including the entire file here use what you want or all of it

<?php if (!defined('APPLICATION')) exit();
/*
Copyright 2008, 2009 Vanilla Forums Inc.
This file is part of Garden.
Garden is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Garden is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Garden.  If not, see <http://www.gnu.org/licenses/>.
Contact Vanilla Forums Inc. at support [at] vanillaforums [dot] com
*/

class MobileThemeHooks implements Gdn_IPlugin {
   
   public function Setup() {
      return TRUE;
   }

   public function OnDisable() {
      return TRUE;
   }
   
   /**
    * Remove plugins that are not mobile friendly!
    */
   public function Gdn_Dispatcher_AfterAnalyzeRequest_Handler($Sender) {
      // Remove plugins so they don't mess up layout or functionality.
      if (in_array($Sender->Application(), array('vanilla', 'conversations')) || ($Sender->Application() == 'dashboard' && in_array($Sender->Controller(), array('Activity', 'Profile', 'Search')))) {
         Gdn::PluginManager()->RemoveMobileUnfriendlyPlugins();
      }
   }
   
   /**
    * Add mobile meta info. Add script to hide iphone browser bar on pageload.
    */
   public function Base_Render_Before($Sender) {
      if (IsMobile() && is_object($Sender->Head)) {
         $Sender->Head->AddTag('meta', array('name' => 'viewport', 'content' => "width=device-width,minimum-scale=1.0,maximum-scale=1.0"));
         $Sender->Head->AddTag('meta', array('name' => 'apple-mobile-web-app-status-bar-style', 'content' => 'black-translucent'));
         $Sender->Head->AddTag('meta', array('name' => 'apple-mobile-web-app-capable', 'content' => 'yes'));
         
         $Sender->Head->AddString('
// If not looking for a specific comment, hide the address bar in iphone
var hash = window.location.href.split("#")[1];
if (typeof(hash) == "undefined") {
   setTimeout(function () {
     window.scrollTo(0, 1);
   }, 1000);
}
');
      }
   }
   
   /**
    * Add new discussion & conversation buttons to various pages.
    */
   public function CategoriesController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'ProfileLink');
   }
   
   public function Plugin_MobileHome_Controller_Render_Before($Sender) {
      $this->_AddButton($Sender, 'MobileHome');
   }
   
   public function DiscussionsController_Render_Before($Sender) {
      // Make sure that discussion clicks (anywhere in a discussion row) take the user to the discussion.
      if (property_exists($Sender, 'Head') && is_object($Sender->Head)) {
         $Sender->Head->AddString('
jQuery(document).ready(function($) {
   $("ul.DataList li.Item").click(function() {
      document.location = $(this).find("a.Title").attr("href");
   });
});
');
      }
      // Add the new discussion button to the page.
      
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender,'Categories');
       $this->_AddButton($Sender, 'ProfileLink');
 

   }

    
   public function DiscussionController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender,'Categories');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'ProfileLink');
   }

   public function ProfileController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender,'Categories');
      $this->_AddButton($Sender, 'ProfileLink');
   }

   public function DraftsController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'ProfileLink');
    }
   
   public function MessagesController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'Conversation');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'ProfileLink');

   }

   public function PostController_Render_Before($Sender) {
      $this->_AddButton($Sender, 'Discussion');
      $this->_AddButton($Sender, 'MobileHome');
      $this->_AddButton($Sender, 'ProfileLink');
   }
   
   private function _AddButton($Sender, $ButtonType) {
      if (is_object($Sender->Menu)) {
         if ($ButtonType == 'Discussion')
            $Sender->Menu->AddLink('NewDiscussion', Img('themes/mobile/design/images/new.png', array('alt' => T('New Discussion'))), '/post/discussion'.(array_key_exists('CategoryID', $Sender->Data) ? '/'.$Sender->Data['CategoryID'] : ''), array('Garden.SignIn.Allow'), array('class' => 'NewDiscussion'));
         elseif ($ButtonType == 'Conversation')
            $Sender->Menu->AddLink('NewConversation', Img('themes/mobile/design/images/new.png', array('alt' => T('New Conversation'))), '/messages/add', '', array('class' => 'NewConversation'));
elseif ($ButtonType == 'MobileHome')
            $Sender->Menu->AddLink('MobileHome', Img('/themes/mobile/mhicon.png', array('alt' => T('MobileHome'))), '/plugin/MobileHome',  array('class' => 'MobileHome'));
 elseif ($ButtonType == 'Categories')           
           $Sender->Menu->AddLink('Categories', T('Categories'),'/categories/all');
elseif ($ButtonType == 'ProfileLink')
$photo = UserPhoto(Gdn::Session()->User);           
 $Sender->Menu->AddLink('User',  $photo,  '/profile/{UserID}/{Username}',array('Garden.SignIn.Allow'), array('class' => 'UserNotifications'));
      }
   }
   
   // Change all pagers to be "more" pagers instead of standard numbered pagers
 
  public function DiscussionsController_BeforeBuildPager_Handler($Sender) {
      $Sender->EventArguments['PagerType'] = 'MorePager';
   }
   
   public function DiscussionController_BeforeBuildPager_Handler($Sender) {
      $Sender->EventArguments['PagerType'] = 'MorePager';
      $Sender->AddJsFile('jquery.gardenmorepager.js');
   }
   
   public function DiscussionController_BeforeDiscussion_Handler($Sender) {
      echo $Sender->Pager->ToString('less');
   }
   
   public function DiscussionController_AfterBuildPager_Handler($Sender) {
      $Sender->Pager->LessCode = 'Older Comments';
      $Sender->Pager->MoreCode = 'More Comments';
   }
   
   public function DiscussionsController_AfterBuildPager_Handler($Sender) {
      $Sender->Pager->MoreCode = 'More Discussions';
   }

}

then you need some css to finish the job

.Banner ul li a.NewDiscussion img,.Banner ul li a.NewConversation img {
vertical-align:middle;
}

.Banner ul li a {
display: block;
height: 35px!important;
}
.Banner ul li a img{
height: 35px!important;
margin-top: -5px;
}

.Banner ul li a.UserNotifications {
display: none;
}
 .Banner ul li a .ProfilePhotoMedium{
border-radius:0!important;
box-shadow:none;
height: 35px;
}

The last step Is to delete the profile link from the default.master.tpl

remove the part {profile_link}

Comments

Sign In or Register to comment.