From 6cea89d8d4e88a995da0883325ce2d759e602157 Mon Sep 17 00:00:00 2001 From: Antonio Ramirez Date: Mon, 13 May 2013 19:33:48 +0200 Subject: [PATCH] made some changes, fix some pitfalls, remove PHP_EOL --- yii/bootstrap/enum/AlertEnum.php | 26 ---- yii/bootstrap/enum/BootstrapEnum.php | 26 ---- yii/bootstrap/enum/ButtonEnum.php | 33 ----- yii/bootstrap/enum/Enum.php | 26 ++++ yii/bootstrap/enum/IconEnum.php | 158 ----------------------- yii/bootstrap/enum/ProgressEnum.php | 19 --- yii/bootstrap/helpers/Icon.php | 22 ---- yii/bootstrap/helpers/base/Alert.php | 19 ++- yii/bootstrap/helpers/base/Assets.php | 53 ++++++++ yii/bootstrap/helpers/base/Button.php | 30 +++-- yii/bootstrap/helpers/base/Icon.php | 168 ++++++++++++++++++++++++- yii/bootstrap/helpers/base/Progress.php | 2 - yii/bootstrap/widgets/Modal.php | 35 +++--- yii/bootstrap/widgets/base/BootstrapWidget.php | 139 -------------------- yii/bootstrap/widgets/base/Widget.php | 126 +++++++++++++++++++ 15 files changed, 425 insertions(+), 457 deletions(-) delete mode 100644 yii/bootstrap/enum/AlertEnum.php delete mode 100644 yii/bootstrap/enum/BootstrapEnum.php delete mode 100644 yii/bootstrap/enum/ButtonEnum.php create mode 100644 yii/bootstrap/enum/Enum.php delete mode 100644 yii/bootstrap/enum/IconEnum.php delete mode 100644 yii/bootstrap/enum/ProgressEnum.php delete mode 100644 yii/bootstrap/widgets/base/BootstrapWidget.php create mode 100644 yii/bootstrap/widgets/base/Widget.php diff --git a/yii/bootstrap/enum/AlertEnum.php b/yii/bootstrap/enum/AlertEnum.php deleted file mode 100644 index d0096fb..0000000 --- a/yii/bootstrap/enum/AlertEnum.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @since 2.0 - */ -class AlertEnum -{ - const CLASS_NAME = 'alert'; - - const TYPE_DEFAULT = ''; - const TYPE_SUCCESS = 'alert-success'; - const TYPE_INFORMATION = 'alert-info'; - const TYPE_ERROR = 'alert-error'; - - const SIZE_BLOCK = 'alert-block'; -} \ No newline at end of file diff --git a/yii/bootstrap/enum/BootstrapEnum.php b/yii/bootstrap/enum/BootstrapEnum.php deleted file mode 100644 index ad1d0a8..0000000 --- a/yii/bootstrap/enum/BootstrapEnum.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @since 2.0 - */ -class BootstrapEnum -{ - const FADE = 'fade'; - const IN = 'in'; - const CLOSE = 'close'; - const DISABLED = 'disabled'; - const ACTIVE = 'active'; - const MODAL = 'modal'; - const HIDE = 'hide'; - const DIALOG = 'dialog'; - const ALERT = 'alert'; -} \ No newline at end of file diff --git a/yii/bootstrap/enum/ButtonEnum.php b/yii/bootstrap/enum/ButtonEnum.php deleted file mode 100644 index 68454e4..0000000 --- a/yii/bootstrap/enum/ButtonEnum.php +++ /dev/null @@ -1,33 +0,0 @@ - - * @since 2.0 - */ -class ButtonEnum -{ - const TYPE_DEFAULT = 'btn'; - const TYPE_PRIMARY = 'btn-primary'; - const TYPE_INFO = 'btn-info'; - const TYPE_SUCCESS = 'btn-success'; - const TYPE_WARNING = 'btn-warning'; - const TYPE_DANGER = 'btn-danger'; - const TYPE_INVERSE = 'btn-inverse'; - const TYPE_LINK = 'btn-link'; - - const SIZE_DEFAULT = ''; - const SIZE_LARGE = 'btn-large'; - const SIZE_SMALL = 'btn-small'; - const SIZE_MINI = 'btn-mini'; - const SIZE_BLOCK = 'btn-block'; - -} \ No newline at end of file diff --git a/yii/bootstrap/enum/Enum.php b/yii/bootstrap/enum/Enum.php new file mode 100644 index 0000000..e11cbb4 --- /dev/null +++ b/yii/bootstrap/enum/Enum.php @@ -0,0 +1,26 @@ + + * @since 2.0 + */ +class Enum +{ + const FADE = 'fade'; + const IN = 'in'; + const CLOSE = 'close'; + const DISABLED = 'disabled'; + const ACTIVE = 'active'; + const MODAL = 'modal'; + const HIDE = 'hide'; + const DIALOG = 'dialog'; + const ALERT = 'alert'; +} \ No newline at end of file diff --git a/yii/bootstrap/enum/IconEnum.php b/yii/bootstrap/enum/IconEnum.php deleted file mode 100644 index bebd8a3..0000000 --- a/yii/bootstrap/enum/IconEnum.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @since 2.0 - */ -class IconEnum -{ - const ICON_GLASS = 'icon-glass'; - const ICON_MUSIC = 'icon-music'; - const ICON_SEARCH = 'icon-search'; - const ICON_ENVELOPE = 'icon-envelope'; - const ICON_HEART = 'icon-heart'; - const ICON_STAR = 'icon-star'; - const ICON_STAR_EMPTY = 'icon-star-empty'; - const ICON_USER = 'icon-user'; - const ICON_FILM = 'icon-film'; - const ICON_TH_LARGE = 'icon-th-large'; - const ICON_TH = 'icon-th'; - const ICON_TH_LIST = 'icon-th-list'; - const ICON_OK = 'icon-ok'; - const ICON_REMOVE = 'icon-remove'; - const ICON_ZOOM_IN = 'icon-zoom-in'; - const ICON_ZOOM_OUT = 'icon-zoom-out'; - const ICON_OFF = 'icon-off'; - const ICON_SIGNAL = 'icon-signal'; - const ICON_COG = 'icon-cog'; - const ICON_TRASH = 'icon-trash'; - const ICON_HOME = 'icon-home'; - const ICON_FILE = 'icon-file'; - const ICON_TIME = 'icon-time'; - const ICON_ROAD = 'icon-road'; - const ICON_DOWNLOAD_ALT = 'icon-download-alt'; - const ICON_DOWNLOAD = 'icon-download'; - const ICON_UPLOAD = 'icon-upload'; - const ICON_INBOX = 'icon-inbox'; - const ICON_PLAY_CIRCLE = 'icon-play-circle'; - const ICON_REPEAT = 'icon-repeat'; - const ICON_REFRESH = 'icon-refresh'; - const ICON_LIST_ALT = 'icon-list-alt'; - const ICON_LOCK = 'icon-lock'; - const ICON_FLAG = 'icon-flag'; - const ICON_HEADPHONES = 'icon-headphones'; - const ICON_VOLUME_OFF = 'icon-volume-off'; - const ICON_VOLUME_DOWN = 'icon-volume-down'; - const ICON_VOLUME_UP = 'icon-volume-up'; - const ICON_QRCODE = 'icon-qrcode'; - const ICON_BARCODE = 'icon-barcode'; - const ICON_TAG = 'icon-tag'; - const ICON_TAGS = 'icon-tags'; - const ICON_BOOK = 'icon-book'; - const ICON_BOOKMARK = 'icon-bookmark'; - const ICON_PRINT = 'icon-print'; - const ICON_CAMERA = 'icon-camera'; - const ICON_FONT = 'icon-font'; - const ICON_BOLD = 'icon-bold'; - const ICON_ITALIC = 'icon-italic'; - const ICON_TEXT_HEIGHT = 'icon-text-height'; - const ICON_TEXT_WIDTH = 'icon-text-width'; - const ICON_ALIGN_LEFT = 'icon-align-left'; - const ICON_ALIGN_CENTER = 'icon-align-center'; - const ICON_ALIGN_RIGHT = 'icon-align-right'; - const ICON_ALIGN_JUSTIFY = 'icon-align-justify'; - const ICON_LIST = 'icon-list'; - const ICON_INDENT_LEFT = 'icon-indent-left'; - const ICON_INDENT_RIGHT = 'icon-indent-right'; - const ICON_FACETIME_VIDEO = 'icon-facetime-video'; - const ICON_PICTURE = 'icon-picture'; - const ICON_PENCIL = 'icon-pencil'; - const ICON_MAP_MARKER = 'icon-map-marker'; - const ICON_ADJUST = 'icon-adjust'; - const ICON_TINT = 'icon-tint'; - const ICON_EDIT = 'icon-edit'; - const ICON_SHARE = 'icon-share'; - const ICON_CHECK = 'icon-check'; - const ICON_MOVE = 'icon-move'; - const ICON_STEP_BACKWARD = 'icon-step-backward'; - const ICON_FAST_BACKWARD = 'icon-fast-backward'; - const ICON_BACKWARD = 'icon-backward'; - const ICON_PLAY = 'icon-play'; - const ICON_PAUSE = 'icon-pause'; - const ICON_STOP = 'icon-pause'; - const ICON_FORWARD = 'icon-forward'; - const ICON_FAST_FORWARD = 'icon-fast-forward'; - const ICON_STEP_FORWARD = 'icon-step-forward'; - const ICON_EJECT = 'icon-eject'; - const ICON_CHEVRON_LEFT = 'icon-chevron-left'; - const ICON_CHEVRON_RIGHT = 'icon-chevron-right'; - const ICON_PLUS_SIGN = 'icon-plus-sign'; - const ICON_MINUS_SIGN = 'icon-minus-sign'; - const ICON_REMOVE_SIGN = 'icon-remove-sign'; - const ICON_OK_SIGN = 'icon-ok-sign'; - const ICON_QUESTION_SIGN = 'icon-question-sign'; - const ICON_INFO_SIGN = 'icon-info-sign'; - const ICON_SCREENSHOT = 'icon-screenshot'; - const ICON_REMOVE_CIRCLE = 'icon-remove-circle'; - const ICON_OK_CIRCLE = 'icon-ok-circle'; - const ICON_BAN_CIRCLE = 'icon-ban-circle'; - const ICON_ARROW_LEFT = 'icon-arrow-left'; - const ICON_ARROW_RIGHT = 'icon-arrow-right'; - const ICON_ARROW_UP = 'icon-arrow-up'; - const ICON_ARROW_DOWN = 'icon-arrow-down'; - const ICON_SHARE_ALT = 'icon-share-alt'; - const ICON_RESIZE_FULL = 'icon-resize-full'; - const ICON_RESIZE_SMALL = 'icon-resize-small'; - const ICON_PLUS = 'icon-plus'; - const ICON_MINUS = 'icon-minus'; - const ICON_ASTERISK = 'icon-asterisk'; - const ICON_EXCLAMATION_SIGN = 'icon-exclamation-sign'; - const ICON_GIFT = 'icon-gift'; - const ICON_LEAF = 'icon-leaf'; - const ICON_FIRE = 'icon-fire'; - const ICON_EYE_OPEN = 'icon-eye-open'; - const ICON_EYE_CLOSE = 'icon-eye-close'; - const ICON_WARNING_SIGN = 'icon-warning-sign'; - const ICON_PLANE = 'icon-plane'; - const ICON_CALENDAR = 'icon-calendar'; - const ICON_RANDOM = 'icon-random'; - const ICON_COMMENT = 'icon-comment'; - const ICON_MAGNET = 'icon-magnet'; - const ICON_CHEVRON_UP = 'icon-chevron-up'; - const ICON_CHEVRON_DOWN = 'icon-chevron-down'; - const ICON_RETWEET = 'icon-retweet'; - const ICON_SHOPPING_CART = 'icon-shopping-cart'; - const ICON_FOLDER_CLOSE = 'icon-folder-close'; - const ICON_FOLDER_OPEN = 'icon-folder-open'; - const ICON_RESIZE_VERTICAL = 'icon-resize-vertical'; - const ICON_RESIZE_HORIZONTAL = 'icon-resize-horizontal'; - const ICON_HDD = 'icon-hdd'; - const ICON_BULLHORN = 'icon-bullhorn'; - const ICON_BELL = 'icon-bell'; - const ICON_CERTFICATE = 'icon-certificate'; - const ICON_THUMBS_UP = 'icon-thumbs-up'; - const ICON_THUMBS_DOWN = 'icon-thumbs-down'; - const ICON_HAND_RIGHT = 'icon-hand-right'; - const ICON_HAND_LEFT = 'icon-hand-left'; - const ICON_HAND_UP = 'icon-hand-up'; - const ICON_HAND_DOWN = 'icon-hand-down'; - const ICON_CIRCLE_ARROW_RIGHT = 'icon-circle-arrow-right'; - const ICON_CIRCLE_ARROW_LEFT = 'icon-circle-arrow-left'; - const ICON_CIRCLE_ARROW_UP = 'icon-circle-arrow-up'; - const ICON_CIRCLE_ARROW_DOWN = 'icon-circle-arrow-down'; - const ICON_GLOBE = 'icon-globe'; - const ICON_WRENCH = 'icon-wrench'; - const ICON_TASKS = 'icon-tasks'; - const ICON_FILTER = 'icon-filter'; - const ICON_BRIEFCASE = 'icon-briefcase'; - const ICON_FULLSCREEN = 'icon-fullscreen'; -} \ No newline at end of file diff --git a/yii/bootstrap/enum/ProgressEnum.php b/yii/bootstrap/enum/ProgressEnum.php deleted file mode 100644 index 44a8b51..0000000 --- a/yii/bootstrap/enum/ProgressEnum.php +++ /dev/null @@ -1,19 +0,0 @@ - - * @since 2.0 - */ -class ProgressEnum -{ - -} \ No newline at end of file diff --git a/yii/bootstrap/helpers/Icon.php b/yii/bootstrap/helpers/Icon.php index 41eb0b9..1be2660 100644 --- a/yii/bootstrap/helpers/Icon.php +++ b/yii/bootstrap/helpers/Icon.php @@ -17,27 +17,5 @@ use yii\helpers\Html; */ class Icon extends base\Icon { - /** - * Generates an icon. - * @param string $icon the icon type. - * @param array $htmlOptions additional HTML attributes. - * @return string the generated icon. - */ - public static function i($icon, $htmlOptions = array()) - { - if (is_string($icon)) - { - if (strpos($icon, 'icon-') === false) - $icon = 'icon-' . implode(' icon-', explode(' ', $icon)); - // TODO: this method may should be added to ArrayHelper::add or ArrayHelper::append? - if (isset($htmlOptions['class'])) - $htmlOptions['class'] .= ' ' . $icon; - else - $htmlOptions['class'] = $icon; - - return Html::tag('i', '', $htmlOptions); - } - return ''; - } } \ No newline at end of file diff --git a/yii/bootstrap/helpers/base/Alert.php b/yii/bootstrap/helpers/base/Alert.php index bc6f899..23899d6 100644 --- a/yii/bootstrap/helpers/base/Alert.php +++ b/yii/bootstrap/helpers/base/Alert.php @@ -7,8 +7,7 @@ namespace yii\bootstrap\helpers\base; -use yii\bootstrap\enum\AlertEnum; -use yii\bootstrap\enum\BootstrapEnum; +use yii\bootstrap\enum\Enum; use yii\helpers\Html; /** @@ -21,6 +20,16 @@ class Alert { /** + * constants + */ + const CLASS_NAME = 'alert'; + const TYPE_DEFAULT = ''; + const TYPE_SUCCESS = 'alert-success'; + const TYPE_INFORMATION = 'alert-info'; + const TYPE_ERROR = 'alert-error'; + const SIZE_BLOCK = 'alert-block'; + + /** * Generates an alert box * @param $message * @param array $htmlOptions @@ -31,14 +40,14 @@ class Alert { // TODO: this method may should be added to ArrayHelper::add or ArrayHelper::append? if (isset($htmlOptions['class'])) - $htmlOptions['class'] .= ' ' . AlertEnum::CLASS_NAME; + $htmlOptions['class'] .= ' ' . static::CLASS_NAME; else - $htmlOptions['class'] = AlertEnum::CLASS_NAME; + $htmlOptions['class'] = static::CLASS_NAME; ob_start(); echo Html::beginTag('div', $htmlOptions); if ($dismiss) - echo Button::closeLink('×', BootstrapEnum::ALERT); + echo Button::closeLink('×', Enum::ALERT); echo $message; echo Html::endTag('div'); return ob_get_clean(); diff --git a/yii/bootstrap/helpers/base/Assets.php b/yii/bootstrap/helpers/base/Assets.php index 30cd8ae..3f7f7e6 100644 --- a/yii/bootstrap/helpers/base/Assets.php +++ b/yii/bootstrap/helpers/base/Assets.php @@ -6,7 +6,11 @@ */ namespace yii\bootstrap\helpers\base; + use Yii; +use yii\helpers\Json; +use yii\web\JsExpression; + /** * Assets provides methods to register bootstrap assets. @@ -22,4 +26,53 @@ class Assets Yii::$app->getView()->registerAssetBundle($bundle); } + + /** + * Registers plugin events with the API. + * + * @param string $selector the CSS selector. + * @param string[] $events the JavaScript event configuration (name=>handler). + * @param int $position the position of the JavaScript code. + * @return boolean whether the events were registered. + */ + public static function registerEvents($selector, $events = array(), $position = View::POS_END) + { + if (empty($events)) + return; + + $script = ''; + foreach ($events as $name => $handler) { + $handler = ($handler instanceof JsExpression) + ? $handler + : new JsExpression($handler); + + $script .= ";jQuery(document).ready(function (){jQuery('{$selector}').on('{$name}', {$handler});});"; + } + if (!empty($script)) + Yii::$app->getView()>registerJs($script, array('position' => $position), static::getUniqueScriptId()); + } + + /** + * Registers a specific Bootstrap plugin using the given selector and options. + * + * @param string $selector the CSS selector. + * @param string $name the name of the plugin + * @param array $options the JavaScript options for the plugin. + * @param int $position the position of the JavaScript code. + */ + public static function registerPlugin($selector, $name, $options = array(), $position = View::POS_END) + { + $options = !empty($options) ? Json::encode($options) : ''; + $script = ";jQuery(document).ready(function (){jQuery('{$selector}').{$name}({$options});});"; + Yii::$app->getView()->registerJs($script, array('position'=>$position)); + } + + /** + * Generates a "somewhat" random id string. + * @return string the id. + */ + public static function getUniqueScriptId() + { + return uniqid(time() . '#', true); + } } \ No newline at end of file diff --git a/yii/bootstrap/helpers/base/Button.php b/yii/bootstrap/helpers/base/Button.php index 2ae9da5..c0ea329 100644 --- a/yii/bootstrap/helpers/base/Button.php +++ b/yii/bootstrap/helpers/base/Button.php @@ -7,9 +7,7 @@ namespace yii\bootstrap\helpers\base; -use yii\bootstrap\enum\AlertEnum; -use yii\bootstrap\enum\ButtonEnum; -use yii\bootstrap\enum\BootstrapEnum; +use yii\bootstrap\enum\Enum; use yii\helpers\Html; /** @@ -21,6 +19,24 @@ use yii\helpers\Html; class Button { /** + * constants + */ + const TYPE_DEFAULT = 'btn'; + const TYPE_PRIMARY = 'btn-primary'; + const TYPE_INFO = 'btn-info'; + const TYPE_SUCCESS = 'btn-success'; + const TYPE_WARNING = 'btn-warning'; + const TYPE_DANGER = 'btn-danger'; + const TYPE_INVERSE = 'btn-inverse'; + const TYPE_LINK = 'btn-link'; + + const SIZE_DEFAULT = ''; + const SIZE_LARGE = 'btn-large'; + const SIZE_SMALL = 'btn-small'; + const SIZE_MINI = 'btn-mini'; + const SIZE_BLOCK = 'btn-block'; + + /** * Returns a dismissal alert link * @param string $text * @param string $dismiss what to dismiss (alert or modal) @@ -28,7 +44,7 @@ class Button */ public static function closeLink($text = '×', $dismiss = null) { - $options = array('class' => BootstrapEnum::CLOSE); + $options = array('class' => Enum::CLOSE); if(null !== $dismiss) $options['data-dismiss'] = $dismiss; return Html::a($text, '#', $options); @@ -42,7 +58,7 @@ class Button */ public static function closeButton($text = '×', $dismiss = null) { - $options = array('type' => 'button', 'class' => BootstrapEnum::CLOSE); + $options = array('type' => 'button', 'class' => Enum::CLOSE); if(null !== $dismiss) $options['data-dismiss'] = $dismiss; @@ -60,9 +76,9 @@ class Button { // TODO: consider method add or append to ArrayHelper class if (isset($htmlOptions['class'])) - $htmlOptions['class'] .= ' ' . ButtonEnum::TYPE_LINK; + $htmlOptions['class'] .= ' ' . static::TYPE_LINK; else - $htmlOptions['class'] = ButtonEnum::TYPE_LINK; + $htmlOptions['class'] = static::TYPE_LINK; return Html::a($label, '#', $htmlOptions); } diff --git a/yii/bootstrap/helpers/base/Icon.php b/yii/bootstrap/helpers/base/Icon.php index 47b0b05..a11d7e6 100644 --- a/yii/bootstrap/helpers/base/Icon.php +++ b/yii/bootstrap/helpers/base/Icon.php @@ -7,8 +7,6 @@ namespace yii\bootstrap\helpers\base; -use yii\bootstrap\enum\IconEnum; - /** * Icon allows you to render Bootstrap Glyphicons sets * @@ -17,5 +15,171 @@ use yii\bootstrap\enum\IconEnum; */ class Icon { + /** + * constants + */ + const ICON_GLASS = 'icon-glass'; + const ICON_MUSIC = 'icon-music'; + const ICON_SEARCH = 'icon-search'; + const ICON_ENVELOPE = 'icon-envelope'; + const ICON_HEART = 'icon-heart'; + const ICON_STAR = 'icon-star'; + const ICON_STAR_EMPTY = 'icon-star-empty'; + const ICON_USER = 'icon-user'; + const ICON_FILM = 'icon-film'; + const ICON_TH_LARGE = 'icon-th-large'; + const ICON_TH = 'icon-th'; + const ICON_TH_LIST = 'icon-th-list'; + const ICON_OK = 'icon-ok'; + const ICON_REMOVE = 'icon-remove'; + const ICON_ZOOM_IN = 'icon-zoom-in'; + const ICON_ZOOM_OUT = 'icon-zoom-out'; + const ICON_OFF = 'icon-off'; + const ICON_SIGNAL = 'icon-signal'; + const ICON_COG = 'icon-cog'; + const ICON_TRASH = 'icon-trash'; + const ICON_HOME = 'icon-home'; + const ICON_FILE = 'icon-file'; + const ICON_TIME = 'icon-time'; + const ICON_ROAD = 'icon-road'; + const ICON_DOWNLOAD_ALT = 'icon-download-alt'; + const ICON_DOWNLOAD = 'icon-download'; + const ICON_UPLOAD = 'icon-upload'; + const ICON_INBOX = 'icon-inbox'; + const ICON_PLAY_CIRCLE = 'icon-play-circle'; + const ICON_REPEAT = 'icon-repeat'; + const ICON_REFRESH = 'icon-refresh'; + const ICON_LIST_ALT = 'icon-list-alt'; + const ICON_LOCK = 'icon-lock'; + const ICON_FLAG = 'icon-flag'; + const ICON_HEADPHONES = 'icon-headphones'; + const ICON_VOLUME_OFF = 'icon-volume-off'; + const ICON_VOLUME_DOWN = 'icon-volume-down'; + const ICON_VOLUME_UP = 'icon-volume-up'; + const ICON_QRCODE = 'icon-qrcode'; + const ICON_BARCODE = 'icon-barcode'; + const ICON_TAG = 'icon-tag'; + const ICON_TAGS = 'icon-tags'; + const ICON_BOOK = 'icon-book'; + const ICON_BOOKMARK = 'icon-bookmark'; + const ICON_PRINT = 'icon-print'; + const ICON_CAMERA = 'icon-camera'; + const ICON_FONT = 'icon-font'; + const ICON_BOLD = 'icon-bold'; + const ICON_ITALIC = 'icon-italic'; + const ICON_TEXT_HEIGHT = 'icon-text-height'; + const ICON_TEXT_WIDTH = 'icon-text-width'; + const ICON_ALIGN_LEFT = 'icon-align-left'; + const ICON_ALIGN_CENTER = 'icon-align-center'; + const ICON_ALIGN_RIGHT = 'icon-align-right'; + const ICON_ALIGN_JUSTIFY = 'icon-align-justify'; + const ICON_LIST = 'icon-list'; + const ICON_INDENT_LEFT = 'icon-indent-left'; + const ICON_INDENT_RIGHT = 'icon-indent-right'; + const ICON_FACETIME_VIDEO = 'icon-facetime-video'; + const ICON_PICTURE = 'icon-picture'; + const ICON_PENCIL = 'icon-pencil'; + const ICON_MAP_MARKER = 'icon-map-marker'; + const ICON_ADJUST = 'icon-adjust'; + const ICON_TINT = 'icon-tint'; + const ICON_EDIT = 'icon-edit'; + const ICON_SHARE = 'icon-share'; + const ICON_CHECK = 'icon-check'; + const ICON_MOVE = 'icon-move'; + const ICON_STEP_BACKWARD = 'icon-step-backward'; + const ICON_FAST_BACKWARD = 'icon-fast-backward'; + const ICON_BACKWARD = 'icon-backward'; + const ICON_PLAY = 'icon-play'; + const ICON_PAUSE = 'icon-pause'; + const ICON_STOP = 'icon-pause'; + const ICON_FORWARD = 'icon-forward'; + const ICON_FAST_FORWARD = 'icon-fast-forward'; + const ICON_STEP_FORWARD = 'icon-step-forward'; + const ICON_EJECT = 'icon-eject'; + const ICON_CHEVRON_LEFT = 'icon-chevron-left'; + const ICON_CHEVRON_RIGHT = 'icon-chevron-right'; + const ICON_PLUS_SIGN = 'icon-plus-sign'; + const ICON_MINUS_SIGN = 'icon-minus-sign'; + const ICON_REMOVE_SIGN = 'icon-remove-sign'; + const ICON_OK_SIGN = 'icon-ok-sign'; + const ICON_QUESTION_SIGN = 'icon-question-sign'; + const ICON_INFO_SIGN = 'icon-info-sign'; + const ICON_SCREENSHOT = 'icon-screenshot'; + const ICON_REMOVE_CIRCLE = 'icon-remove-circle'; + const ICON_OK_CIRCLE = 'icon-ok-circle'; + const ICON_BAN_CIRCLE = 'icon-ban-circle'; + const ICON_ARROW_LEFT = 'icon-arrow-left'; + const ICON_ARROW_RIGHT = 'icon-arrow-right'; + const ICON_ARROW_UP = 'icon-arrow-up'; + const ICON_ARROW_DOWN = 'icon-arrow-down'; + const ICON_SHARE_ALT = 'icon-share-alt'; + const ICON_RESIZE_FULL = 'icon-resize-full'; + const ICON_RESIZE_SMALL = 'icon-resize-small'; + const ICON_PLUS = 'icon-plus'; + const ICON_MINUS = 'icon-minus'; + const ICON_ASTERISK = 'icon-asterisk'; + const ICON_EXCLAMATION_SIGN = 'icon-exclamation-sign'; + const ICON_GIFT = 'icon-gift'; + const ICON_LEAF = 'icon-leaf'; + const ICON_FIRE = 'icon-fire'; + const ICON_EYE_OPEN = 'icon-eye-open'; + const ICON_EYE_CLOSE = 'icon-eye-close'; + const ICON_WARNING_SIGN = 'icon-warning-sign'; + const ICON_PLANE = 'icon-plane'; + const ICON_CALENDAR = 'icon-calendar'; + const ICON_RANDOM = 'icon-random'; + const ICON_COMMENT = 'icon-comment'; + const ICON_MAGNET = 'icon-magnet'; + const ICON_CHEVRON_UP = 'icon-chevron-up'; + const ICON_CHEVRON_DOWN = 'icon-chevron-down'; + const ICON_RETWEET = 'icon-retweet'; + const ICON_SHOPPING_CART = 'icon-shopping-cart'; + const ICON_FOLDER_CLOSE = 'icon-folder-close'; + const ICON_FOLDER_OPEN = 'icon-folder-open'; + const ICON_RESIZE_VERTICAL = 'icon-resize-vertical'; + const ICON_RESIZE_HORIZONTAL = 'icon-resize-horizontal'; + const ICON_HDD = 'icon-hdd'; + const ICON_BULLHORN = 'icon-bullhorn'; + const ICON_BELL = 'icon-bell'; + const ICON_CERTFICATE = 'icon-certificate'; + const ICON_THUMBS_UP = 'icon-thumbs-up'; + const ICON_THUMBS_DOWN = 'icon-thumbs-down'; + const ICON_HAND_RIGHT = 'icon-hand-right'; + const ICON_HAND_LEFT = 'icon-hand-left'; + const ICON_HAND_UP = 'icon-hand-up'; + const ICON_HAND_DOWN = 'icon-hand-down'; + const ICON_CIRCLE_ARROW_RIGHT = 'icon-circle-arrow-right'; + const ICON_CIRCLE_ARROW_LEFT = 'icon-circle-arrow-left'; + const ICON_CIRCLE_ARROW_UP = 'icon-circle-arrow-up'; + const ICON_CIRCLE_ARROW_DOWN = 'icon-circle-arrow-down'; + const ICON_GLOBE = 'icon-globe'; + const ICON_WRENCH = 'icon-wrench'; + const ICON_TASKS = 'icon-tasks'; + const ICON_FILTER = 'icon-filter'; + const ICON_BRIEFCASE = 'icon-briefcase'; + const ICON_FULLSCREEN = 'icon-fullscreen'; + + /** + * Generates an icon. + * @param string $icon the icon type. + * @param array $htmlOptions additional HTML attributes. + * @return string the generated icon. + */ + public static function i($icon, $htmlOptions = array()) + { + if (is_string($icon)) + { + if (strpos($icon, 'icon-') === false) + $icon = 'icon-' . implode(' icon-', explode(' ', $icon)); + + // TODO: this method may should be added to ArrayHelper::add or ArrayHelper::append? + if (isset($htmlOptions['class'])) + $htmlOptions['class'] .= ' ' . $icon; + else + $htmlOptions['class'] = $icon; + return Html::tag('i', '', $htmlOptions); + } + return ''; + } } \ No newline at end of file diff --git a/yii/bootstrap/helpers/base/Progress.php b/yii/bootstrap/helpers/base/Progress.php index a13a44f..8006f66 100644 --- a/yii/bootstrap/helpers/base/Progress.php +++ b/yii/bootstrap/helpers/base/Progress.php @@ -7,8 +7,6 @@ namespace yii\bootstrap\helpers\base; -use yii\bootstrap\enum\ProgressEnum; - /** * Progress provides methods to make use of bootstrap progress bars in your application * diff --git a/yii/bootstrap/widgets/Modal.php b/yii/bootstrap/widgets/Modal.php index c591944..15e874b 100644 --- a/yii/bootstrap/widgets/Modal.php +++ b/yii/bootstrap/widgets/Modal.php @@ -11,8 +11,7 @@ use Yii; use yii\helpers\Html; use yii\helpers\ArrayHelper; use yii\bootstrap\helpers\Button; -use yii\bootstrap\enum\BootstrapEnum; -use yii\web\JsExpression; +use yii\bootstrap\enum\Enum; /** * Modal renders a bootstrap modal on the page for its use on your application. @@ -27,7 +26,7 @@ use yii\web\JsExpression; * 'footer' => '//modal/_footer', // we can also use view paths * 'buttonOptions' => array( * 'label' => 'Show Modal', - * 'class' => \yii\bootstrap\enum\ButtonEnum::TYPE_DEFAULT + * 'class' => \yii\bootstrap\enum\Button::TYPE_DEFAULT * ) * )); * ``` @@ -35,7 +34,7 @@ use yii\web\JsExpression; * @author Antonio Ramirez * @since 2.0 */ -class Modal extends base\BootstrapWidget +class Modal extends base\Widget { /** * @var array The additional HTML attributes of the button that will show the modal. If empty array, only @@ -140,14 +139,14 @@ class Modal extends base\BootstrapWidget $this->defaultOption('id', $this->getId()); $this->selector = '#' . ArrayHelper::getValue($this->options, 'id'); - $this->defaultOption('role', BootstrapEnum::DIALOG); + $this->defaultOption('role', Enum::DIALOG); $this->defaultOption('tabindex', '-1'); - $this->addOption('class', BootstrapEnum::MODAL); - $this->addOption('class', BootstrapEnum::HIDE); + $this->addOption('class', Enum::MODAL); + $this->addOption('class', Enum::HIDE); if ($this->fade) - $this->addOption('class', BootstrapEnum::FADE); + $this->addOption('class', Enum::FADE); $this->initPluginOptions(); $this->initPluginEvents(); @@ -204,7 +203,7 @@ class Modal extends base\BootstrapWidget $this->buttonOptions['data-toggle'] = isset($this->buttonOptions['data-toggle']) ? $this->buttonOptions['data-toggle'] - : BootstrapEnum::MODAL; + : Enum::MODAL; if ($this->remote !== null && !isset($this->buttonOptions['data-remote'])) $this->buttonOptions['data-remote'] = Html::url($this->remote); @@ -230,13 +229,13 @@ class Modal extends base\BootstrapWidget */ public function renderModal() { - echo Html::beginTag('div', $this->options) . PHP_EOL; + echo Html::beginTag('div', $this->options); $this->renderModalHeader(); $this->renderModalBody(); $this->renderModalFooter(); - echo Html::endTag('div') . PHP_EOL; + echo Html::endTag('div'); } /** @@ -244,11 +243,11 @@ class Modal extends base\BootstrapWidget */ public function renderModalHeader() { - echo '' . PHP_EOL; + echo Html::endTag('div'); } /** @@ -256,9 +255,9 @@ class Modal extends base\BootstrapWidget */ public function renderModalBody() { - echo '' . PHP_EOL; + echo Html::endTag('div'); } /** @@ -267,9 +266,9 @@ class Modal extends base\BootstrapWidget public function renderModalFooter() { - echo '' . PHP_EOL; + echo Html::endTag('div'); } /** diff --git a/yii/bootstrap/widgets/base/BootstrapWidget.php b/yii/bootstrap/widgets/base/BootstrapWidget.php deleted file mode 100644 index 042f6f9..0000000 --- a/yii/bootstrap/widgets/base/BootstrapWidget.php +++ /dev/null @@ -1,139 +0,0 @@ - - * @since 2.0 - */ -class BootstrapWidget extends Widget -{ - - /** - * @var bool whether to register the asset - */ - public $responsive = true; - - /** - * @var array the HTML attributes for the widget container tag. - */ - public $options = array(); - - /** - * @var string the widget name - */ - protected $name; - - /** - * @var string the jQuery selector of the widget - */ - protected $selector; - - /** - * Initializes the widget. - */ - public function init() - { - $this->view->registerAssetBundle(($this->responsive ? 'yii/bootstrap' : 'yii/bootstrap-responsive')); - } - - /** - * Registers plugin events with the API. - * @param string $selector the CSS selector. - * @param string[] $events the JavaScript event configuration (name=>handler). - * @param int $position the position of the JavaScript code. - * @return boolean whether the events were registered. - */ - protected function registerEvents($selector, $events = array(), $position = View::POS_END) - { - if (empty($events)) - return; - - $script = ''; - foreach ($events as $name => $handler) { - $handler = ($handler instanceof JsExpression) - ? $handler - : new JsExpression($handler); - - $script .= ";jQuery(document).ready(function (){jQuery('{$selector}').on('{$name}', {$handler});});"; - } - if (!empty($script)) - $this->view->registerJs($script, array('position' => $position), $this->getUniqueScriptId()); - } - - /** - * Registers a specific Bootstrap plugin using the given selector and options. - * @param string $selector the CSS selector. - * @param array $options the JavaScript options for the plugin. - * @param int $position the position of the JavaScript code. - * @throws \yii\base\InvalidCallException - */ - public function registerPlugin($selector, $options = array(), $position = View::POS_END) - { - if(null === $this->name) - throw new InvalidCallException(); - - $options = !empty($options) ? Json::encode($options) : ''; - $script = ";jQuery(document).ready(function (){jQuery('{$selector}').{$this->name}({$options});});"; - $this->view->registerJs($script, array('position'=>$position)); - } - - /** - * Generates a "somewhat" random id string. - * @return string the id. - * @todo not sure it should be here or - */ - protected function getUniqueScriptId() - { - return uniqid(time() . '#', true); - } - - /** - * Adds a new option. If the key does not exists, it will create one, if it exists it will append the value - * and also makes sure the uniqueness of them. - * - * @param string $key - * @param mixed $value - * @param string $glue - * @return array - */ - protected function addOption($key, $value, $glue = ' ') - { - if (isset($this->options[$key])) { - if (!is_array($this->options[$key])) - $this->options[$key] = explode($glue, $this->options[$key]); - $this->options[$key][] = $value; - $this->options[$key] = array_unique($this->options[$key]); - $this->options[$key] = implode($glue, $this->options[$key]); - } else - $this->options[$key] = $value; - return $this->options; - } - - /** - * Sets the default value for an item if not set. - * @param string $key the name of the item. - * @param mixed $value the default value. - * @return array - */ - protected function defaultOption($key, $value) - { - if (!isset($this->options[$key])) - $this->options[$key] = $value; - return $this->options; - } -} \ No newline at end of file diff --git a/yii/bootstrap/widgets/base/Widget.php b/yii/bootstrap/widgets/base/Widget.php new file mode 100644 index 0000000..822f761 --- /dev/null +++ b/yii/bootstrap/widgets/base/Widget.php @@ -0,0 +1,126 @@ + + * @since 2.0 + */ +class Widget extends \yii\base\Widget +{ + + /** + * @var bool whether to register the asset + */ + public $responsive = true; + + /** + * @var array the HTML attributes for the widget container tag. + */ + public $options = array(); + + /** + * @var string the widget name + */ + protected $name; + + /** + * @var string the jQuery selector of the widget + */ + protected $selector; + + /** + * Initializes the widget. + */ + public function init() + { + // ensure bundle + Assets::registerBundle($this->responsive); + } + + /** + * Registers plugin events with the API. + * @param string $selector the CSS selector. + * @param string[] $events the JavaScript event configuration (name=>handler). + * @param int $position the position of the JavaScript code. + * @return boolean whether the events were registered. + */ + protected function registerEvents($selector, $events = array(), $position = View::POS_END) + { + Assets::registerEvents($selector, $events, $position); + } + + /** + * Registers a specific Bootstrap plugin using the given selector and options. + * @param string $selector the CSS selector. + * @param array $options the JavaScript options for the plugin. + * @param int $position the position of the JavaScript code. + * @throws \yii\base\InvalidCallException + */ + public function registerPlugin($selector, $options = array(), $position = View::POS_END) + { + if(null === $this->name) + throw new InvalidCallException(); + + Assets::registerPlugin($selector, $this->name, $options, $position); + } + + /** + * Generates a "somewhat" random id string. + * @return string the id. + * @todo not sure it should be here or + */ + protected function getUniqueScriptId() + { + return uniqid(time() . '#', true); + } + + /** + * Adds a new option. If the key does not exists, it will create one, if it exists it will append the value + * and also makes sure the uniqueness of them. + * + * @param string $key + * @param mixed $value + * @param string $glue + * @return array + */ + protected function addOption($key, $value, $glue = ' ') + { + if (isset($this->options[$key])) { + if (!is_array($this->options[$key])) + $this->options[$key] = explode($glue, $this->options[$key]); + $this->options[$key][] = $value; + $this->options[$key] = array_unique($this->options[$key]); + $this->options[$key] = implode($glue, $this->options[$key]); + } else + $this->options[$key] = $value; + return $this->options; + } + + /** + * Sets the default value for an item if not set. + * @param string $key the name of the item. + * @param mixed $value the default value. + * @return array + */ + protected function defaultOption($key, $value) + { + if (!isset($this->options[$key])) + $this->options[$key] = $value; + return $this->options; + } +} \ No newline at end of file