Hi Jigal,

Thank you for the explanation and the code.

I renamed tx_iconClass to tx_myext_iconClass. The only other thing I had to change to make it work is that the iconClass should return 'extensions-myext-mystate' instead of just 'mystate'.

Except clearing the sprites folder in typo3temp I also had to clear the opcode cache to see my changes, but it worked!

Thanks,
Loek


On 19-05-14 21:39, Jigal van Hemert wrote:
Hi,

On 19-5-2014 17:39, Loek Hilgersom wrote:
I'd like to have the backend show a different page icon when something
is set in 'Show Content from Page'. Just like you get a little arrow on
the icon when you make a shortcut.

That would take away a lot of confusion for editors (trying to put
content on a page and wondering why nothing changes, etc).

Any idea how to achieve that?

You can change the page icon itself with a userfunc (the usual overlays are
still applied). This code was used in a 4.x extension. Use the namespaced class
names if you make 6.x specific extensions.

Create an extension. In ext_tables.php:

// Defines $icon array()
$pathToExtension = t3lib_extMgm::extRelPath('<<ext_key>>');
$icons = array(
     'mystate' => $pathToExtension .
'Resources/Public/images/icons/mystateicon.png',
     'mystate_hide' => $pathToExtension .
'Resources/Public/images/icons/mystateicon_hide.png',
);
// Gives the $icon array to the sprite manager
t3lib_SpriteManager::addSingleIcons($icons, '<<ext_key>>');

// Register userfunc for page icon
$TCA['pages']['ctrl']['typeicon_classes']['userFunc'] =
'tx_iconClass->getPageIcon';

In class.tx_iconClass.php :

class tx_iconClass {

   /**
    * Determines icon class for special page cases
    *
    * @param array $parameters array with record
    * @param string $ref Unused reference parameters
    * @return string Class name of page
    */
   public function getPageIcon($parameters, $ref) {
     $iconClass = '';
     $row = $parameters['row'];
     if (....some..condition...) {
       $iconClass = 'extensions-<<ext_key>>-mystate';
       if ((int)$row['nav_hide'] === 1) {
         $iconClass .= '_hide';
       }
     }
     return $iconClass;
   }
}

The "hidden" state is a bit special. It doesn't trigger an overlay icon to be
added to the page icon, but it uses a separate icon.

Your special icons are shown everywhere in the backend where the page icon is
usually displayed.

_______________________________________________
TYPO3-english mailing list
TYPO3-english@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-english

Reply via email to