Jump to:

17452 Posts in 4473 Topics by 1971 members

Archive

SilverStripe Forums » Archive » Extension: Developer Flush link

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

Page: 1
Go to End
Author Topic: 925 Views
  • JGC
    Avatar
    Community Member
    25 Posts

    Extension: Developer Flush link Link to this post

    It's sort of an extension, anyway

    What it does
    Adds a link to the main menu of the CMS to enable/disable flush-mode (?flush=1) for developing.
    - Says "Start Flush" or "Stop Flush" depending on whether you're in flush-mode
    - Doesn't destroy any other URL parameters you're using
    - Doesn't modify other links on page, so flush will reset to OFF when you follow non-AJAX links

    Why?
    I've only been using SS for a couple of weeks, but I'm already sick of typing in ?flush=1 to refresh the page Just wrote this and I'm posting it in case anyone else thinks it's a small but handy tool.

    How?
    Just add these two pieces of code into your site:

    cms/code/LeftAndMain.php, line 294 of an unchanged LeftAndMain.php, or the line after '$linkingmode = "";' in 'public function MainMenu()' for changed files

    ##   DEVELOPER'S FLUSH LINK 1.2 - 3 lines here, 44 in mysite/_config.php
    $urlQ = parse_url($_SERVER['REQUEST_URI']);
    if (isset($urlQ['query'])) { if (strstr($urlQ['query'], 'flush=1') && ($menuItem->title == 'Start Flush' || $menuItem->title == 'Stop Flush')) { $linkingmode = "current"; } }

    At the bottom of mysite/config.php, before the PHP close tag (if not using /mysite then put in whichever folder is relevant)

    ###
    ##   DEVELOPER'S FLUSH LINK 1.2 - 44 lines here, 3 in cms/code/LeftAndMain.php
    ##   Adds a 'Flush' link to the main menu - handy for developing!
    ##   Lets developers go to the toilet without leaving the keyboard [first and last toilet joke]
    ###

    $url = parse_url($_SERVER['REQUEST_URI']);
    $flushTitle = '';

    # Is there a 'query' array element? If not, we can't be flushing
    if (!isset($url['query']) || $url['query'] == '') { $url['query'] = '?flush=1'; $flushTitle = 'Start '; }
    else
       {
       # Are we already flushing?
       if (strstr($url['query'], 'flush=1'))
          {
          # Update the Menu Title hint
          $flushTitle = 'Stop ';
          # Remove the flushes
          $url['query'] = str_replace('?flush=1', '', $url['query']);
          $url['query'] = str_replace('&flush=1', '', $url['query']);
          $url['query'] = str_replace('flush=1', '', $url['query']);
          # Check it doesn't now start with a &
          if (substr($url['query'], 0, 1) == '&') { $url['query'] = '?' . substr($url['query'], 1); }
          else if (substr($url['query'], 0, 1) != '?' && strlen($url['query']) > 0) { $url['query'] = '?' . $url['query']; }
          }
       else
          {
          # Not flushing
          if (strlen($url['query']) > 0)   { $url['query'] = '?' . $url['query'] . '&flush=1'; }
          else                     { $url['query'] = '?flush=1'; }
          # Update the Menu Title hint
          $flushTitle = 'Start ';
          }
       }
    $flushLink = implode($url);

    # Add a divider, then the flush item
    CMSMenu::add_link('X_FLUSH_DIVIDER', '|', '#', -1);
    CMSMenu::add_link('LINK_FLUSH', $flushTitle . 'Flush', $flushLink, -2);

    ###
    ##   END OF DEVELOPER'S FLUSH LINK
    ###

    Changelog
    1.2 - Now highlights link on main menu if you're in flush-mode
    1.1 - Whoops, posted the wrong version. Ah well, I guess it's an update, of sorts.
    1.0 - Created

    925 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.