Autodoc
  • Namespace
  • Class
  • Tree

Namespaces

  • BlueTihi
    • Context
  • Brickrouge
    • Element
      • Nodes
    • Renderer
    • Widget
  • ICanBoogie
    • ActiveRecord
    • AutoConfig
    • CLDR
    • Composer
    • Core
    • Event
    • Exception
    • HTTP
      • Dispatcher
      • Request
    • I18n
      • Translator
    • Mailer
    • Modules
      • Taxonomy
        • Support
      • Thumbnailer
        • Versions
    • Object
    • Operation
      • Dispatcher
    • Prototype
    • Routes
    • Routing
      • Dispatcher
    • Session
  • Icybee
    • ActiveRecord
      • Model
    • ConfigOperation
    • Document
    • EditBlock
    • Element
      • ActionbarContextual
      • ActionbarSearch
      • ActionbarToolbar
    • FormBlock
    • Installer
    • ManageBlock
    • Modules
      • Articles
      • Cache
        • Collection
        • ManageBlock
      • Comments
        • ManageBlock
      • Contents
        • ManageBlock
      • Dashboard
      • Editor
        • Collection
      • Files
        • File
        • ManageBlock
      • Forms
        • Form
        • ManageBlock
      • I18n
      • Images
        • ManageBlock
      • Members
      • Modules
        • ManageBlock
      • Nodes
        • ManageBlock
        • Module
      • Pages
        • BreadcrumbElement
        • LanguagesElement
        • ManageBlock
        • NavigationBranchElement
        • NavigationElement
        • Page
        • PageController
      • Registry
      • Search
      • Seo
      • Sites
        • ManageBlock
      • Taxonomy
        • Terms
          • ManageBlock
        • Vocabulary
          • ManageBlock
      • Users
        • ManageBlock
        • NonceLogin
        • Roles
      • Views
        • ActiveRecordProvider
        • Collection
        • View
    • Operation
      • ActiveRecord
      • Constructor
      • Module
      • Widget
    • Rendering
  • None
  • Patron
  • PHP

Classes

  • AdjustNode
  • ConfigOperation
  • DeleteBlock
  • DeleteOperation
  • EditBlock
  • ExportBlock
  • ExportOperation
  • Helpers
  • Hooks
  • ImportOperation
  • ManageBlock
  • Model
  • Module
  • Node
  • OfflineOperation
  • OnlineOperation
  • PopNode
  • QueryOperationOperation
  • SaveOperation
  • TitleSlugCombo
  • Update20131208
  • Update20140405
  • ViewProvider

Functions

  • slugize
  1 <?php
  2 
  3 /*
  4  * This file is part of the Icybee package.
  5  *
  6  * (c) Olivier Laviale <olivier.laviale@gmail.com>
  7  *
  8  * For the full copyright and license information, please view the LICENSE
  9  * file that was distributed with this source code.
 10  */
 11 
 12 namespace Icybee\Modules\Nodes;
 13 
 14 use ICanBoogie\I18n;
 15 
 16 use Brickrouge;
 17 use Brickrouge\Element;
 18 use Brickrouge\Text;
 19 
 20 class TitleSlugCombo extends \Brickrouge\Widget
 21 {
 22     const T_NODEID = '#node-id';
 23     const T_SLUG_NAME = '#slug-name';
 24 
 25     static protected function add_assets(\Brickrouge\Document $document)
 26     {
 27         parent::add_assets($document);
 28 
 29         $document->css->add(DIR . 'public/module.css');
 30         $document->js->add(DIR . 'public/module.js');
 31     }
 32 
 33     private $title_el;
 34     private $slug_tease;
 35     private $slug_el;
 36 
 37     public function __construct(array $attributes=[])
 38     {
 39         $attributes += [
 40 
 41             self::T_SLUG_NAME => null,
 42             Element::LABEL => null,
 43             Element::LABEL_POSITION => 'before'
 44 
 45         ];
 46 
 47         $label = $attributes[Element::LABEL];
 48 
 49         parent::__construct('div', $attributes + [
 50 
 51             Element::CHILDREN => [
 52 
 53                 $this->title_el = new Text([
 54 
 55                     Element::LABEL_POSITION => $attributes[Element::LABEL_POSITION],
 56                     Element::REQUIRED => true
 57 
 58                 ]),
 59 
 60                 $this->slug_tease = new Element('span', [
 61 
 62                     self::INNER_HTML => '&nbsp;',
 63 
 64                     'class' => 'slug-reminder small'
 65 
 66                 ]),
 67 
 68                 '<a href="#slug-collapse" class="small">' . I18n\t('fold', [], [ 'scope' => 'titleslugcombo.element' ]) . '</a>',
 69 
 70                 '<div class="slug">',
 71 
 72                 $this->slug_el = new Text([
 73 
 74                     Element::LABEL => 'slug',
 75                     Element::LABEL_POSITION => 'above',
 76                     Element::DESCRIPTION => 'slug',
 77 
 78                     'name' => $attributes[self::T_SLUG_NAME]
 79 
 80                 ]),
 81 
 82                 '</div>'
 83             ],
 84 
 85             'data-auto-label' => '<em>' . I18n\t('auto', [], [ 'scope' => 'titleslugcombo.element' ]) . '</em>'
 86 
 87         ]);
 88     }
 89 
 90     public function offsetSet($offset, $value)
 91     {
 92         if ($offset == 'name')
 93         {
 94             $this->title_el['name'] = $value;
 95 
 96             if (!$this->slug_el['name'])
 97             {
 98                 $this->slug_el['name'] = $value . 'slug';
 99             }
100         }
101 
102         parent::offsetSet($offset, $value);
103     }
104 
105     protected function render_inner_html()
106     {
107         global $core;
108 
109         $slug = $this->slug_el['value'];
110 
111         $tease = '<strong>Slug&nbsp;:</strong> ';
112         $tease .= '<a href="#slug-edit" title="' . I18n\t('edit', [], [ 'scope' => 'titleslugcombo.element' ]) . '">' . ($slug ? \ICanBoogie\escape(\ICanBoogie\shorten($slug)) : $this->dataset['auto-label']) . '</a>';
113         $tease .= ' <span>&ndash; <a href="slug-delete" class="warn">' . I18n\t('reset', [], [ 'scope' => 'titleslugcombo.element' ]) . '</a></span>';
114 
115         $this->slug_tease->inner_html = $tease;
116 
117         $rc = parent::render_inner_html();
118 
119         $nid = $this[self::T_NODEID];
120 
121         if ($nid)
122         {
123             $node = $core->models['nodes'][$nid];
124 
125             if ($node && $node->url && $node->url[0] != '#')
126             {
127                 $url = $node->url;
128                 $url_label = \ICanBoogie\shorten($url, 64);
129 
130                 $rc .= '<p class="small light">';
131                 $rc .= '<strong>URL&nbsp;:</strong> ' . $url_label;
132             }
133         }
134 
135         return $rc;
136     }
137 }
Autodoc API documentation generated by ApiGen 2.8.0