[!!!][TASK] Move flash message output to alerts 48/33048/5 just2b/monolog
authorGeorg Ringer <georg.ringer@gmail.com>
Mon, 29 Sep 2014 20:14:18 +0000 (22:14 +0200)
committerFelix Kopp <felix-source@phorax.com>
Sat, 25 Oct 2014 22:13:54 +0000 (00:13 +0200)
Since bootstrap is available it would make sense to
use the alert classes instead of the custom implementation.

Resolves: #61959
Releases: master
Change-Id: I0a6723a1bdb7333bc48f71876b8392e78299e4f3
Reviewed-on: http://review.typo3.org/33048
Reviewed-by: Felix Kopp <felix-source@phorax.com>
Tested-by: Felix Kopp <felix-source@phorax.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Classes/Messaging/FlashMessage.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-61959-FlashMessageClasses.rst [new file with mode: 0644]
typo3/sysext/lowlevel/Classes/View/DatabaseIntegrityView.php
typo3/sysext/reports/Classes/Report/Status/Status.php
typo3/sysext/sv/Classes/Report/ServicesListReport.php
typo3/sysext/t3skin/Resources/Private/Styles/TYPO3/_deprecated.less
typo3/sysext/t3skin/Resources/Private/Styles/TYPO3/_element_message.less
typo3/sysext/t3skin/Resources/Public/Css/visual/t3kin.css

index 1b0437e..c115df3 100644 (file)
@@ -32,10 +32,10 @@ class FlashMessage extends \TYPO3\CMS\Core\Messaging\AbstractMessage {
         */
        protected $classes = array(
                self::NOTICE => 'notice',
-               self::INFO => 'information',
-               self::OK => 'ok',
+               self::INFO => 'info',
+               self::OK => 'success',
                self::WARNING => 'warning',
-               self::ERROR => 'error'
+               self::ERROR => 'danger'
        );
 
        /**
@@ -79,7 +79,7 @@ class FlashMessage extends \TYPO3\CMS\Core\Messaging\AbstractMessage {
         * @return string The message severity class name
         */
        public function getClass() {
-               return 'message-' . $this->classes[$this->severity];
+               return 'alert-' . $this->classes[$this->severity];
        }
 
        /**
@@ -90,9 +90,9 @@ class FlashMessage extends \TYPO3\CMS\Core\Messaging\AbstractMessage {
        public function render() {
                $title = '';
                if (!empty($this->title)) {
-                       $title = '<div class="message-header">' . $this->title . '</div>';
+                       $title = '<h4>' . $this->title . '</h4>';
                }
-               $message = '<div class="typo3-message ' . $this->getClass() . '">' . $title . '<div class="message-body">' . $this->message . '</div>' . '</div>';
+               $message = '<div class="alert ' . $this->getClass() . '">' . $title . '<div class="alert-body">' . $this->message . '</div>' . '</div>';
                return $message;
        }
 
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-61959-FlashMessageClasses.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-61959-FlashMessageClasses.rst
new file mode 100644 (file)
index 0000000..d9974c0
--- /dev/null
@@ -0,0 +1,30 @@
+======================================================
+Breaking: #61959 - Move flash message output to alerts
+======================================================
+
+Description
+===========
+
+Flash messages are now styled by using the native CSS classes of Twitter Bootstrap. The changed classes are:
+
+* "typo3-message message-notice" => "alert alert-notice"
+* "typo3-message message-information" => "alert alert-info"
+* "typo3-message message-ok" => "alert alert-success"
+* "typo3-message message-warning" => "alert alert-warning"
+* "typo3-message message-error" => "alert alert-danger"
+
+Impact
+======
+
+Extensions which use the old classes like "typo3-message message-information" rely on deprecated CSS classes
+which might lead to non styled output.
+
+Affected installations
+======================
+
+Any installation that uses the HTML of flash messages without calling the API.
+
+Migration
+=========
+
+Change the used CSS classes to the new ones.
\ No newline at end of file
index b4e7d29..235dfd5 100644 (file)
@@ -300,7 +300,7 @@ class DatabaseIntegrityView {
 
                $content .= '<h3>' . $GLOBALS['LANG']->getLL('checkScript_update_description') . '</h3>';
                $content .= '<p><code>php ' . PATH_typo3 . 'cli_dispatch.phpsh lowlevel_refindex -e</code></p>';
-               $content .= '<div class="typo3-message message-information"><div class="message-body">' . $GLOBALS['LANG']->getLL('checkScript_information') . '</div></div>';
+               $content .= '<div class="alert alert-info"><div class="message-body">' . $GLOBALS['LANG']->getLL('checkScript_information') . '</div></div>';
 
                $content .= '<p>' . $GLOBALS['LANG']->getLL('checkScript_moreDetails') . '<br />';
                $content .= '<a href="' . $GLOBALS['BACK_PATH'] . 'sysext/lowlevel/HOWTO_clean_up_TYPO3_installations.txt" target="_new">' . PATH_typo3 . 'sysext/lowlevel/HOWTO_clean_up_TYPO3_installations.txt</a></p>';
index 60813dc..7aabdb3 100644 (file)
@@ -116,7 +116,7 @@ class Status implements \TYPO3\CMS\Reports\ReportInterface {
                // TODO refactor into separate methods, status list and single status
                $content = '';
                $template = '
-               <div class="typo3-message message-###CLASS###">
+               <div class="alert alert-###CLASS###">
                        <div class="header-container">
                                <div class="message-header message-left">###HEADER###</div>
                                <div class="message-header message-right">###STATUS###</div>
@@ -129,10 +129,10 @@ class Status implements \TYPO3\CMS\Reports\ReportInterface {
                        $id = str_replace(' ', '-', $provider);
                        $classes = array(
                                \TYPO3\CMS\Reports\Status::NOTICE => 'notice',
-                               \TYPO3\CMS\Reports\Status::INFO => 'information',
-                               \TYPO3\CMS\Reports\Status::OK => 'ok',
+                               \TYPO3\CMS\Reports\Status::INFO => 'info',
+                               \TYPO3\CMS\Reports\Status::OK => 'success',
                                \TYPO3\CMS\Reports\Status::WARNING => 'warning',
-                               \TYPO3\CMS\Reports\Status::ERROR => 'error'
+                               \TYPO3\CMS\Reports\Status::ERROR => 'danger'
                        );
                        $icon[\TYPO3\CMS\Reports\Status::WARNING] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('status-dialog-warning');
                        $icon[\TYPO3\CMS\Reports\Status::ERROR] = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('status-dialog-error');
index 503028c..f7fe289 100644 (file)
@@ -125,12 +125,12 @@ class ServicesListReport implements \TYPO3\CMS\Reports\ReportInterface {
                $serviceSubtypes = $serviceInformation['serviceSubTypes'] ? implode(', ', $serviceInformation['serviceSubTypes']) : '-';
                $serviceOperatingSystem = $serviceInformation['os'] ?: $GLOBALS['LANG']->getLL('any');
                $serviceRequiredExecutables = $serviceInformation['exec'] ?: '-';
-               $serviceAvailabilityClass = 'typo3-message message-error';
+               $serviceAvailabilityClass = 'alert alert-danger';
                $serviceAvailable = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:no');
                try {
                        $serviceDetails = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::findServiceByKey($serviceKey);
                        if ($serviceDetails['available']) {
-                               $serviceAvailabilityClass = 'typo3-message message-ok';
+                               $serviceAvailabilityClass = 'alert alert-success';
                                $serviceAvailable = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:yes');
                        }
                } catch (\TYPO3\CMS\Core\Exception $e) {
@@ -170,10 +170,10 @@ class ServicesListReport implements \TYPO3\CMS\Reports\ReportInterface {
                                </thead>
                                <tbody>';
                        foreach ($searchPaths as $path => $isValid) {
-                               $pathAccessibleClass = 'typo3-message message-error';
+                               $pathAccessibleClass = 'alert alert-danger';
                                $pathAccessible = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:no');
                                if ($isValid) {
-                                       $pathAccessibleClass = 'typo3-message message-ok';
+                                       $pathAccessibleClass = 'alert alert-success';
                                        $pathAccessible = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xlf:yes');
                                }
                                $content .= '
index 00db414..1c46eb8 100644 (file)
@@ -105,4 +105,101 @@ Background color classes
 
 .bgColor6 {
        background-color: #f7f7f7;
-}
\ No newline at end of file
+}
+
+
+#typo3-messages {
+  margin-bottom: 10px;
+}
+
+.typo3-message {
+  .alert;
+
+  background-position: 10px 12px;
+  background-repeat: no-repeat;
+  padding: 12px 12px 12px 36px;
+
+  .message-header {
+    font-weight: bold;
+    margin-bottom: floor(@line-height-computed / 2);
+  }
+
+  ul,
+  ol {
+    padding-left: 16px;
+  }
+
+  .message-header {
+    display: block;
+  }
+
+  .t3-icon-actions-message-close {
+    cursor: pointer;
+    float: right;
+  }
+
+  li {
+    margin-bottom: 10px;
+    list-style: disc;
+  }
+
+  a {
+    text-decoration: underline;
+
+  }
+}
+
+
+.message-notice {
+  // Nothing to inherit from Bootstrap - there is no alert-notice
+
+  color: #777;
+  background-color: #f6f7fa;
+  background-image: url('../../../../icons/gfx/notice.png');
+  border-color: #c2cbcf;
+
+  a {
+    color: #777;
+  }
+}
+
+.message-information {
+  .alert-info;
+
+  background-image: url('../../../../icons/gfx/information.png');
+
+  a {
+    color: #4c73a1;
+  }
+}
+
+.message-ok {
+  .alert-success;
+
+  background-image: url('../../../../icons/gfx/ok.png');
+
+  a {
+    color: #3b7826;
+  }
+}
+
+.message-warning {
+  .alert-warning;
+
+  background-image: url("../../../../icons/gfx/warning.png");
+
+  a {
+    color: #9e7d4a;
+  }
+}
+
+.message-error {
+  .alert-danger;
+
+  background-image: url('../../../../icons/gfx/error.png');
+
+  a {
+    color: #aa0225;
+  }
+}
+
index 0df5d23..4c03db4 100644 (file)
  * The TYPO3 project - inspiring people to share!
  */
 
-#typo3-messages {
-       margin-bottom: 10px;
-}
-
-.typo3-message {
-       .alert;
-
-       background-position: 10px 12px;
-       background-repeat: no-repeat;
-       padding: 12px 12px 12px 36px;
-
-       .message-header {
-               font-weight: bold;
-               margin-bottom: floor(@line-height-computed / 2);
-       }
-
-       ul,
-       ol {
-               padding-left: 16px;
-       }
-
-       .message-header {
-               display: block;
-       }
-
-       .t3-icon-actions-message-close {
-               cursor: pointer;
-               float: right;
-       }
-
-       li {
-               margin-bottom: 10px;
-               list-style: disc;
-       }
-
-       a {
-               text-decoration: underline;
-
-       }
-}
-
-
-.message-notice {
-       // Nothing to inherit from Bootstrap - there is no alert-notice
-
-       color: #777;
-       background-color: #f6f7fa;
-       background-image: url('../../../../icons/gfx/notice.png');
-       border-color: #c2cbcf;
-
-       a {
-               color: #777;
-       }
-}
-
-.message-information {
-       .alert-info;
-
-       background-image: url('../../../../icons/gfx/information.png');
-
-       a {
-               color: #4c73a1;
-       }
-}
-
-.message-ok {
-       .alert-success;
-
-       background-image: url('../../../../icons/gfx/ok.png');
-
-       a {
-               color: #3b7826;
-       }
-}
-
-.message-warning {
-       .alert-warning;
-
-       background-image: url("../../../../icons/gfx/warning.png");
-
-       a {
-               color: #9e7d4a;
-       }
-}
-
-.message-error {
-       .alert-danger;
-
-       background-image: url('../../../../icons/gfx/error.png');
-
-       a {
-               color: #aa0225;
-       }
-}
-
+.alert-notice {
+  background-color: #f6f7fa;
+  border-color: #eef;
+  color: #777;
+}
\ No newline at end of file
index b0e954f..c5b3989 100644 (file)
@@ -7233,6 +7233,123 @@ Background color classes
 .bgColor6 {
   background-color: #f7f7f7;
 }
+#typo3-messages {
+  margin-bottom: 10px;
+}
+.typo3-message {
+  padding: 15px;
+  margin-bottom: 18px;
+  border: 1px solid transparent;
+  border-radius: 2px;
+  background-position: 10px 12px;
+  background-repeat: no-repeat;
+  padding: 12px 12px 12px 36px;
+}
+.typo3-message h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.typo3-message .alert-link {
+  font-weight: bold;
+}
+.typo3-message > p,
+.typo3-message > ul {
+  margin-bottom: 0;
+}
+.typo3-message > p + p {
+  margin-top: 5px;
+}
+.typo3-message .message-header {
+  font-weight: bold;
+  margin-bottom: 9px;
+}
+.typo3-message ul,
+.typo3-message ol {
+  padding-left: 16px;
+}
+.typo3-message .message-header {
+  display: block;
+}
+.typo3-message .t3-icon-actions-message-close {
+  cursor: pointer;
+  float: right;
+}
+.typo3-message li {
+  margin-bottom: 10px;
+  list-style: disc;
+}
+.typo3-message a {
+  text-decoration: underline;
+}
+.message-notice {
+  color: #777;
+  background-color: #f6f7fa;
+  background-image: url('../../../../icons/gfx/notice.png');
+  border-color: #c2cbcf;
+}
+.message-notice a {
+  color: #777;
+}
+.message-information {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #4c73a1;
+  background-image: url('../../../../icons/gfx/information.png');
+}
+.message-information hr {
+  border-top-color: #a6e1ec;
+}
+.message-information .alert-link {
+  color: #3c5a7e;
+}
+.message-information a {
+  color: #4c73a1;
+}
+.message-ok {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #3b7826;
+  background-image: url('../../../../icons/gfx/ok.png');
+}
+.message-ok hr {
+  border-top-color: #c9e2b3;
+}
+.message-ok .alert-link {
+  color: #28511a;
+}
+.message-ok a {
+  color: #3b7826;
+}
+.message-warning {
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+  color: #9e7d4a;
+  background-image: url("../../../../icons/gfx/warning.png");
+}
+.message-warning hr {
+  border-top-color: #f7e1b5;
+}
+.message-warning .alert-link {
+  color: #7b623a;
+}
+.message-warning a {
+  color: #9e7d4a;
+}
+.message-error {
+  background-color: #f2dede;
+  border-color: #ebccd1;
+  color: #aa0225;
+  background-image: url('../../../../icons/gfx/error.png');
+}
+.message-error hr {
+  border-top-color: #e4b9c0;
+}
+.message-error .alert-link {
+  color: #78011a;
+}
+.message-error a {
+  color: #aa0225;
+}
 /**
  * This file is part of the TYPO3 CMS project.
  *
@@ -7723,123 +7840,11 @@ table#typo3-history-item img {
  *
  * The TYPO3 project - inspiring people to share!
  */
-#typo3-messages {
-  margin-bottom: 10px;
-}
-.typo3-message {
-  padding: 15px;
-  margin-bottom: 18px;
-  border: 1px solid transparent;
-  border-radius: 2px;
-  background-position: 10px 12px;
-  background-repeat: no-repeat;
-  padding: 12px 12px 12px 36px;
-}
-.typo3-message h4 {
-  margin-top: 0;
-  color: inherit;
-}
-.typo3-message .alert-link {
-  font-weight: bold;
-}
-.typo3-message > p,
-.typo3-message > ul {
-  margin-bottom: 0;
-}
-.typo3-message > p + p {
-  margin-top: 5px;
-}
-.typo3-message .message-header {
-  font-weight: bold;
-  margin-bottom: 9px;
-}
-.typo3-message ul,
-.typo3-message ol {
-  padding-left: 16px;
-}
-.typo3-message .message-header {
-  display: block;
-}
-.typo3-message .t3-icon-actions-message-close {
-  cursor: pointer;
-  float: right;
-}
-.typo3-message li {
-  margin-bottom: 10px;
-  list-style: disc;
-}
-.typo3-message a {
-  text-decoration: underline;
-}
-.message-notice {
-  color: #777;
+.alert-notice {
   background-color: #f6f7fa;
-  background-image: url('../../../../icons/gfx/notice.png');
-  border-color: #c2cbcf;
-}
-.message-notice a {
+  border-color: #eef;
   color: #777;
 }
-.message-information {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #4c73a1;
-  background-image: url('../../../../icons/gfx/information.png');
-}
-.message-information hr {
-  border-top-color: #a6e1ec;
-}
-.message-information .alert-link {
-  color: #3c5a7e;
-}
-.message-information a {
-  color: #4c73a1;
-}
-.message-ok {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #3b7826;
-  background-image: url('../../../../icons/gfx/ok.png');
-}
-.message-ok hr {
-  border-top-color: #c9e2b3;
-}
-.message-ok .alert-link {
-  color: #28511a;
-}
-.message-ok a {
-  color: #3b7826;
-}
-.message-warning {
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-  color: #9e7d4a;
-  background-image: url("../../../../icons/gfx/warning.png");
-}
-.message-warning hr {
-  border-top-color: #f7e1b5;
-}
-.message-warning .alert-link {
-  color: #7b623a;
-}
-.message-warning a {
-  color: #9e7d4a;
-}
-.message-error {
-  background-color: #f2dede;
-  border-color: #ebccd1;
-  color: #aa0225;
-  background-image: url('../../../../icons/gfx/error.png');
-}
-.message-error hr {
-  border-top-color: #e4b9c0;
-}
-.message-error .alert-link {
-  color: #78011a;
-}
-.message-error a {
-  color: #aa0225;
-}
 /**
  * This file is part of the TYPO3 CMS project.
  *