[FEATURE] Make displayed fields in "Send to stage" layer configurable
authorSonja Scholz <ss@cabag.ch>
Fri, 4 Mar 2011 13:44:06 +0000 (14:44 +0100)
committerSusanne Moog <typo3@susannemoog.de>
Sat, 9 Jul 2011 18:24:26 +0000 (20:24 +0200)
Until now the recipients in the send to next stage popup are allways
checked per default and can be changed by the editor completely.

With this feature the administrator is able to
define the default state of the checkboxes. There is the choice between
"All are checked per default but it can be changed", "Some are checked
per default but can not be changed" and "All are checked per default
but con not be changed". Additionally it is possible to hide the
recipient checkboxes and the additional recipient field from the popup,
which is useful if there is a recipient configuration behind, see above.

Change-Id: Ib036d7dfabee8139bd7632184c9e46ce79d22979
Resolves: #13095

typo3/sysext/workspaces/Classes/ExtDirect/ActionHandler.php
typo3/sysext/workspaces/Classes/Service/Stages.php
typo3/sysext/workspaces/Documentation/manual.odt
typo3/sysext/workspaces/Documentation/manual.pdf
typo3/sysext/workspaces/Documentation/manual.sxw
typo3/sysext/workspaces/Resources/Private/Language/locallang_csh_sysws_stage.xlf
typo3/sysext/workspaces/Resources/Private/Language/locallang_db.xlf
typo3/sysext/workspaces/ext_tables.php
typo3/sysext/workspaces/ext_tables.sql
typo3/sysext/workspaces/tca.php

index b1e54bd..b660548 100644 (file)
@@ -221,9 +221,10 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
         *
         * @param array list of recipients
         * @param string given user string of additional recipients
+        * @param integer stage id
         * @return array
         */
-       public function getRecipientList(array $uidOfRecipients, $additionalRecipients) {
+       public function getRecipientList(array $uidOfRecipients, $additionalRecipients, $stageId) {
                $finalRecipients = array();
 
                $recipients = array();
@@ -234,6 +235,19 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
                        }
                }
 
+                       // the notification mode can be configured in the workspace stage record
+               $notification_mode = $this->getStageService()->getNotificationMode($stageId);
+               if (intval($notification_mode) === Tx_Workspaces_Service_Stages::MODE_NOTIFY_ALL || intval($notification_mode) === Tx_Workspaces_Service_Stages::MODE_NOTIFY_ALL_STRICT) {
+                               // get the default recipients from the stage configuration
+                               // the default recipients needs to be added in some cases of the notification_mode
+                       $default_recipients = $this->getStageService()->getResponsibleBeUser($stageId, true);
+                       foreach ($default_recipients as $default_recipient_uid => $default_recipient_record) {
+                               if (!in_array($default_recipient_record['email'],$recipients)) {
+                                       $recipients[] = $default_recipient_record['email'];
+                               }
+                       }
+               }
+
                if ($additionalRecipients != '') {
                        $additionalRecipients = t3lib_div::trimExplode("\n", $additionalRecipients, TRUE);
                } else {
@@ -277,7 +291,7 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
                $table = $parameters->affects->table;
                $uid = $parameters->affects->uid;
                $t3ver_oid = $parameters->affects->t3ver_oid;
-               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional);
+               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional, $setStageId);
 
                if ($setStageId == Tx_Workspaces_Service_Stages::STAGE_PUBLISH_EXECUTE_ID) {
                        $cmdArray[$table][$t3ver_oid]['version']['action'] = 'swap';
@@ -324,7 +338,7 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
                $comments = $parameters->comments;
                $table = $parameters->affects->table;
                $uid = $parameters->affects->uid;
-               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional);
+               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional, $setStageId);
 
                $cmdArray[$table][$uid]['version']['action'] = 'setStage';
                $cmdArray[$table][$uid]['version']['stageId'] = $setStageId;
@@ -369,7 +383,7 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
                $setStageId = $parameters->affects->nextStage;
                $comments = $parameters->comments;
                $elements = $parameters->affects->elements;
-               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional);
+               $recipients = $this->getRecipientList($parameters->receipients, $parameters->additional, $setStageId);
 
                foreach($elements as $key=>$element) {
                        if ($setStageId == Tx_Workspaces_Service_Stages::STAGE_PUBLISH_EXECUTE_ID) {
@@ -403,41 +417,68 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
         * @return array
         */
        protected function getSentToStageWindow($nextStageId) {
+               $workspaceRec = t3lib_BEfunc::getRecord('sys_workspace', $this->getStageService()->getWorkspaceId());
+               $showNotificationFields = FALSE;
                $stageTitle = $this->getStageService()->getStageTitle($nextStageId);
                $result = array(
-                       'title' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:actionSendToStage'),
+                       'title' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:actionSendToStage'),
                        'items' => array(
                                array(
                                        'xtype' => 'panel',
                                        'bodyStyle' => 'margin-bottom: 7px; border: none;',
-                                       'html' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:window.sendToNextStageWindow.itemsWillBeSentTo') . ' ' . $stageTitle,
-                               ),
-                               array(
-                                       'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:window.sendToNextStageWindow.sendMailTo'),
-                                       'xtype' => 'checkboxgroup',
-                                       'itemCls' => 'x-check-group-alt',
-                                       'columns' => 1,
-                                       'style' => 'max-height: 200px',
-                                       'autoScroll' => TRUE,
-                                       'items' => array(
-                                               $this->getReceipientsOfStage($nextStageId)
-                                       )
-                               ),
-                               array(
-                                       'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:window.sendToNextStageWindow.additionalRecipients'),
-                                       'name' => 'additional',
-                                       'xtype' => 'textarea',
-                                       'width' => 250,
-                               ),
-                               array(
-                                       'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:window.sendToNextStageWindow.comments'),
+                                       'html' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:window.sendToNextStageWindow.itemsWillBeSentTo') . ' ' . $stageTitle,
+                               )
+                       )
+               );
+
+               switch ($nextStageId) {
+                       case Tx_Workspaces_Service_Stages::STAGE_PUBLISH_EXECUTE_ID:
+                       case Tx_Workspaces_Service_Stages::STAGE_PUBLISH_ID:
+                               if (!empty($workspaceRec['publish_allow_notificaton_settings'])) {
+                                       $showNotificationFields = TRUE;
+                               }
+                               break;
+                       case Tx_Workspaces_Service_Stages::STAGE_EDIT_ID:
+                               if (!empty($workspaceRec['edit_allow_notificaton_settings'])) {
+                                       $showNotificationFields = TRUE;
+                               }
+                               break;
+                       default:
+                               $allow_notificaton_settings = $this->getStageService()->getPropertyOfCurrentWorkspaceStage($nextStageId, 'allow_notificaton_settings');
+                               if (!empty($allow_notificaton_settings)) {
+                                       $showNotificationFields = TRUE;
+                               }
+                               break;
+               }
+
+               if ($showNotificationFields == TRUE) {
+                       $result['items'][] = array(
+                                               'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:window.sendToNextStageWindow.sendMailTo'),
+                                               'xtype' => 'checkboxgroup',
+                                               'itemCls' => 'x-check-group-alt',
+                                               'columns' => 1,
+                                               'style' => 'max-height: 200px',
+                                               'autoScroll' => true,
+                                               'items' => array(
+                                                       $this->getReceipientsOfStage($nextStageId)
+                                               )
+                                       );
+
+                       $result['items'][] = array(
+                                               'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:window.sendToNextStageWindow.additionalRecipients'),
+                                               'name' => 'additional',
+                                               'xtype' => 'textarea',
+                                               'width' => 250,
+                                       );
+               }
+
+               $result['items'][] = array(
+                                       'fieldLabel' => $GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:window.sendToNextStageWindow.comments'),
                                        'name' => 'comments',
                                        'xtype' => 'textarea',
                                        'width' => 250,
                                        'value' => $this->getDefaultCommentOfStage($nextStageId),
-                               ),
-                       )
-               );
+                               );
 
                return $result;
        }
@@ -452,14 +493,38 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
                $result = array();
 
                $recipients = $this->getStageService()->getResponsibleBeUser($stage);
+               $default_recipients = $this->getStageService()->getResponsibleBeUser($stage, true);
 
                foreach ($recipients as $id => $user) {
                        if (t3lib_div::validEmail($user['email'])) {
+                               $checked = FALSE;
+                               $disabled = FALSE;
                                $name = $user['realName'] ? $user['realName'] : $user['username'];
+
+                                       // the notification mode can be configured in the workspace stage record
+                               $notification_mode = $this->getStageService()->getNotificationMode($stage);
+                               if (intval($notification_mode) === Tx_Workspaces_Service_Stages::MODE_NOTIFY_SOMEONE) {
+                                               // all responsible users are checked per default, as in versions before
+                                       $checked = TRUE;
+                               } elseif (intval($notification_mode) === Tx_Workspaces_Service_Stages::MODE_NOTIFY_ALL) {
+                                               // the default users are checked only
+                                       if (!empty($default_recipients[$id])) {
+                                               $checked = TRUE;
+                                               $disabled = TRUE;
+                                       } else {
+                                               $checked = FALSE;
+                                       }
+                               } elseif (intval($notification_mode) === Tx_Workspaces_Service_Stages::MODE_NOTIFY_ALL_STRICT) {
+                                               // all responsible users are checked
+                                       $checked = TRUE;
+                                       $disabled = TRUE;
+                               }
+
                                $result[] = array(
                                        'boxLabel' => sprintf('%s (%s)', $name, $user['email']),
                                        'name' => 'receipients-' . $id,
-                                       'checked' => TRUE,
+                                       'checked' => $checked,
+                                       'disabled' => $disabled,
                                );
                        }
                }
@@ -496,4 +561,4 @@ class tx_Workspaces_ExtDirect_ActionHandler extends tx_Workspaces_ExtDirect_Abst
 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/workspaces/Classes/ExtDirect/ActionHandler.php'])) {
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/workspaces/Classes/ExtDirect/ActionHandler.php']);
 }
-?>
\ No newline at end of file
+?>
index abf4e9c..0c54f53 100644 (file)
@@ -38,6 +38,9 @@ class Tx_Workspaces_Service_Stages {
                // ready to publish stage
        const STAGE_PUBLISH_ID = -10;
        const STAGE_EDIT_ID = 0;
+       const MODE_NOTIFY_SOMEONE = 0;
+       const MODE_NOTIFY_ALL = 1;
+       const MODE_NOTIFY_ALL_STRICT = 2;
 
        /**
         * Current workspace ID
@@ -380,23 +383,39 @@ class Tx_Workspaces_Service_Stages {
         * Get array of all responsilbe be_users for a stage
         *
         * @param       int     stage id
+        * @param       boolean if field notification_defaults should be selected instead of responsible users
         * @return      array be_users with e-mail and name
         */
-       public function getResponsibleBeUser($stageId) {
+       public function getResponsibleBeUser($stageId, $selectDefaultUserField = false) {
                $workspaceRec = t3lib_BEfunc::getRecord('sys_workspace', $this->getWorkspaceId());
                $recipientArray = array();
 
                switch ($stageId) {
                        case self::STAGE_PUBLISH_EXECUTE_ID:
                        case self::STAGE_PUBLISH_ID:
-                               $userList = $this->getResponsibleUser($workspaceRec['adminusers']);
+                               if ($selectDefaultUserField == false) {
+                                       $userList = $this->getResponsibleUser($workspaceRec['adminusers']);
+                               } else {
+                                       $notification_default_user = $workspaceRec['publish_notification_defaults'];
+                                       $userList = $this->getResponsibleUser($notification_default_user);
+                               }
                                break;
                        case self::STAGE_EDIT_ID:
-                               $userList = $this->getResponsibleUser($workspaceRec['members']);
+                               if ($selectDefaultUserField == false) {
+                                       $userList = $this->getResponsibleUser($workspaceRec['members']);
+                               } else {
+                                       $notification_default_user = $workspaceRec['edit_notification_defaults'];
+                                       $userList = $this->getResponsibleUser($notification_default_user);
+                               }
                                break;
                        default:
-                               $responsible_persons = $this->getPropertyOfCurrentWorkspaceStage($stageId, 'responsible_persons');
-                               $userList = $this->getResponsibleUser($responsible_persons);
+                               if ($selectDefaultUserField == false) {
+                                       $responsible_persons = $this->getPropertyOfCurrentWorkspaceStage($stageId, 'responsible_persons');
+                                       $userList = $this->getResponsibleUser($responsible_persons);
+                               } else {
+                                       $notification_default_user = $this->getPropertyOfCurrentWorkspaceStage($stageId, 'notification_defaults');
+                                       $userList = $this->getResponsibleUser($notification_default_user);
+                               }
                                break;
                }
 
@@ -669,10 +688,46 @@ class Tx_Workspaces_Service_Stages {
 
                return $isValid;
        }
+
+       /**
+        * Returns the notification mode from stage configuration
+        *
+        * Return values:
+        * 0 = notify someone / old way / default setting
+        * 1 = notify all responsible users (some users checked per default and you're not allowed to uncheck them)
+        * 2 = notify all responsible users (all users are checked and nothing can be changed during stage change)
+        *
+        * @param integer stage id to return the notification mode for
+        * @return integer
+        */
+       public function getNotificationMode($stageId) {
+               if (!t3lib_div::testInt($stageId)) {
+                       throw new InvalidArgumentException($GLOBALS['LANG']->sL('LLL:EXT:workspaces/Resources/Private/Language/locallang.xml:error.stageId.integer'));
+               }
+
+               switch ($stageId) {
+                       case self::STAGE_PUBLISH_EXECUTE_ID:
+                       case self::STAGE_PUBLISH_ID:
+                                       $workspaceRecord = t3lib_BEfunc::getRecord('sys_workspace', $this->getWorkspaceId());
+                                       return $workspaceRecord['publish_notification_mode'];
+                               break;
+                       case self::STAGE_EDIT_ID:
+                                       $workspaceRecord = t3lib_BEfunc::getRecord('sys_workspace', $this->getWorkspaceId());
+                                       return $workspaceRecord['edit_notification_mode'];
+                               break;
+                       default:
+                               $workspaceStage = t3lib_BEfunc::getRecord(self::TABLE_STAGE, $stageId);
+
+                               if (is_array($workspaceStage) && isset($workspaceStage['notification_mode'])) {
+                                       return $workspaceStage['notification_mode'];
+                               }
+                               break;
+               }
+       }
 }
 
 
 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/workspaces/Classes/Service/Stages.php'])) {
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/workspaces/Classes/Service/Stages.php']);
 }
-?>
\ No newline at end of file
+?>
index 00993b0..d1e9251 100644 (file)
Binary files a/typo3/sysext/workspaces/Documentation/manual.odt and b/typo3/sysext/workspaces/Documentation/manual.odt differ
index 9e9f4e9..af7c378 100644 (file)
Binary files a/typo3/sysext/workspaces/Documentation/manual.pdf and b/typo3/sysext/workspaces/Documentation/manual.pdf differ
index 78bee39..8cb88e1 100644 (file)
Binary files a/typo3/sysext/workspaces/Documentation/manual.sxw and b/typo3/sysext/workspaces/Documentation/manual.sxw differ
index 66ad0dd..5db51ad 100644 (file)
         <source>Here its possible to define a standard mail comment which will be inserted into the stage change mail. When no standard mail comment was defined here its possible to write a comment for the mail on every stage change.</source>
         <target approved="yes">Here its possible to define a standard mail comment which will be inserted into the stage change mail. When no standard mail comment was defined here its possible to write a comment for the mail on every stage change.</target>
       </trans-unit>
+      <trans-unit id="notification_mode.description">
+        <source>You can choose one of three settings for the recipient suggestion list on stage change. In the most configurations the default option is a good choice. For exact explanation about the single options please refer to the documentation.</source>
+        <target approved="yes">You can choose one of three settings for the recipient suggestion list on stage change. In the most configurations the default option is a good choice. For exact explanation about the single options please refer to the documentation.</target>
+      </trans-unit>
+      <trans-unit id="notification_defaults.description">
+        <source>Select these backend users or backend groups that should be selected per default to receive a notification mail. Select only users/groups that are also selected as responsible for this stage.</source>
+        <target approved="yes">Select these backend users or backend groups that should be selected per default to receive a notification mail. Select only users/groups that are also selected as responsible for this stage.</target>
+      </trans-unit>
+      <trans-unit id="allow_notificaton_settings.description">
+        <source>Disable this checkbox to hide the recipient and additional recipient fields from the stage change popup window. Notifications are sent in the background nevertheless but based on configuration in workspace stage setting.</source>
+        <target approved="yes">Disable this checkbox to hide the recipient and additional recipient fields from the stage change popup window. Notifications are sent in the background nevertheless but based on configuration in workspace stage setting.</target>
+      </trans-unit>
     </body>
   </file>
 </xliff>
index b21bb63..8a13a10 100644 (file)
         <source>Workspace Stage</source>
         <target approved="yes">Workspace Stage</target>
       </trans-unit>
+      <trans-unit id="tabs.notification_settings">
+        <source>Notification settings</source>
+        <target approved="yes">Notification settings</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.edit_notification_mode">
+        <source>Edit stage: Recipient suggestion checkboxes</source>
+        <target approved="yes">Edit stage: Recipient suggestion checkboxes</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.notification_mode.0">
+        <source>All are selected per default (can be changed)</source>
+        <target approved="yes">All are selected per default (can be changed)</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.notification_mode.1">
+        <source>Some are selected per default (defaults cannot be unchecked)</source>
+        <target approved="yes">Some are selected per default (defaults cannot be unchecked)</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.notification_mode.2">
+        <source>All are selected per default (cannot be changed)</source>
+        <target approved="yes">All are selected per default (cannot be changed)</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.edit_notification_defaults">
+        <source>Edit stage: default notification mail recipients</source>
+        <target approved="yes">Edit stage: default notification mail recipients</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.edit_allow_notificaton_settings">
+        <source>Allow notification settings during stage change back to edit stage</source>
+        <target approved="yes">Allow notification settings during stage change back to edit stage</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.publish_notification_mode">
+        <source>Ready to publish stage: Recipient suggestion checkboxes</source>
+        <target approved="yes">Ready to publish stage: Recipient suggestion checkboxes</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.publish_notification_defaults">
+        <source>Ready to publish stage: default notification mail recipients</source>
+        <target approved="yes">Ready to publish stage: default notification mail recipients</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace.publish_allow_notificaton_settings">
+        <source>Allow notification settings during stage change to ready to publish</source>
+        <target approved="yes">Allow notification settings during stage change to ready to publish</target>
+      </trans-unit>
+      <trans-unit id="tabs.general">
+        <source>General</source>
+        <target approved="yes">General</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace_stage.notification_mode">
+        <source>Recipient suggestion checkboxes</source>
+        <target approved="yes">Recipient suggestion checkboxes</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace_stage.notification_defaults">
+        <source>Default notification mail recipients</source>
+        <target approved="yes">Default notification mail recipients</target>
+      </trans-unit>
+      <trans-unit id="sys_workspace_stage.allow_notificaton_settings">
+        <source>Allow notification settings during stage change</source>
+        <target approved="yes">Allow notification settings during stage change</target>
+      </trans-unit>
     </body>
   </file>
 </xliff>
index 849f6d6..75db830 100644 (file)
@@ -79,6 +79,7 @@ $TCA['sys_workspace_stage'] = array(
                ),
                'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY) . 'tca.php',
                'versioningWS_alwaysAllowLiveEdit' => TRUE,
+               'dividers2tabs' => TRUE
        )
 );
        // todo move icons to Core sprite or keep them here and remove the todo note ;)
@@ -91,4 +92,4 @@ t3lib_SpriteManager::addSingleIcons($icons, $_EXTKEY);
 t3lib_extMgm::addLLrefForTCAdescr('sys_workspace_stage','EXT:workspaces/Resources/Private/Language/locallang_csh_sysws_stage.xml');
 
 
-?>
\ No newline at end of file
+?>
index dbe1531..1f7709e 100644 (file)
@@ -2,30 +2,36 @@
 # Table structure for table 'sys_workspace'
 #
 CREATE TABLE sys_workspace (
-  uid int(11) NOT NULL auto_increment,
-  pid int(11) DEFAULT '0' NOT NULL,
-  tstamp int(11) DEFAULT '0' NOT NULL,
-  deleted tinyint(1) DEFAULT '0' NOT NULL,
-  title varchar(30) DEFAULT '' NOT NULL,
-  description varchar(255) DEFAULT '' NOT NULL,
-  adminusers varchar(4000) DEFAULT '' NOT NULL,
-  members varchar(4000) DEFAULT '' NOT NULL,
-  reviewers varchar(4000) DEFAULT '' NOT NULL,
-  db_mountpoints varchar(255) DEFAULT '' NOT NULL,
-  file_mountpoints varchar(255) DEFAULT '' NOT NULL,
-  publish_time int(11) DEFAULT '0' NOT NULL,
-  unpublish_time int(11) DEFAULT '0' NOT NULL,
-  freeze tinyint(3) DEFAULT '0' NOT NULL,
-  live_edit tinyint(3) DEFAULT '0' NOT NULL,
-  vtypes tinyint(3) DEFAULT '0' NOT NULL,
-  disable_autocreate tinyint(1) DEFAULT '0' NOT NULL,
-  swap_modes tinyint(3) DEFAULT '0' NOT NULL,
-  publish_access tinyint(3) DEFAULT '0' NOT NULL,
-  custom_stages int(11) DEFAULT '0' NOT NULL,
-  stagechg_notification tinyint(3) DEFAULT '0' NOT NULL,
+       uid int(11) NOT NULL auto_increment,
+       pid int(11) DEFAULT '0' NOT NULL,
+       tstamp int(11) DEFAULT '0' NOT NULL,
+       deleted tinyint(1) DEFAULT '0' NOT NULL,
+       title varchar(30) DEFAULT '' NOT NULL,
+       description varchar(255) DEFAULT '' NOT NULL,
+       adminusers varchar(4000) DEFAULT '' NOT NULL,
+       members varchar(4000) DEFAULT '' NOT NULL,
+       reviewers varchar(4000) DEFAULT '' NOT NULL,
+       db_mountpoints varchar(255) DEFAULT '' NOT NULL,
+       file_mountpoints varchar(255) DEFAULT '' NOT NULL,
+       publish_time int(11) DEFAULT '0' NOT NULL,
+       unpublish_time int(11) DEFAULT '0' NOT NULL,
+       freeze tinyint(3) DEFAULT '0' NOT NULL,
+       live_edit tinyint(3) DEFAULT '0' NOT NULL,
+       vtypes tinyint(3) DEFAULT '0' NOT NULL,
+       disable_autocreate tinyint(1) DEFAULT '0' NOT NULL,
+       swap_modes tinyint(3) DEFAULT '0' NOT NULL,
+       publish_access tinyint(3) DEFAULT '0' NOT NULL,
+       custom_stages int(11) DEFAULT '0' NOT NULL,
+       stagechg_notification tinyint(3) DEFAULT '0' NOT NULL,
+       edit_notification_mode tinyint(3) DEFAULT '0' NOT NULL,
+       edit_notification_defaults varchar(255) DEFAULT '' NOT NULL,
+       edit_allow_notificaton_settings tinyint(3) DEFAULT '0' NOT NULL,
+       publish_notification_mode tinyint(3) DEFAULT '0' NOT NULL,
+       publish_notification_defaults varchar(255) DEFAULT '' NOT NULL,
+       publish_allow_notificaton_settings tinyint(3) DEFAULT '0' NOT NULL,
 
-  PRIMARY KEY (uid),
-  KEY parent (pid)
+       PRIMARY KEY (uid),
+       KEY parent (pid)
 );
 
 
@@ -43,7 +49,10 @@ CREATE TABLE sys_workspace_stage (
        default_mailcomment text,
        parentid int(11) DEFAULT '0' NOT NULL,
        parenttable tinytext NOT NULL,
+       notification_mode tinyint(3) DEFAULT '0' NOT NULL,
+       notification_defaults varchar(255) DEFAULT '' NOT NULL,
+       allow_notificaton_settings tinyint(3) DEFAULT '0' NOT NULL,
 
        PRIMARY KEY (uid),
        KEY parent (pid)
-);
\ No newline at end of file
+);
index 6038073..d5d96c3 100644 (file)
@@ -180,10 +180,85 @@ $TCA['sys_workspace'] = array(
                                ),
                                'default' => 0
                ),
+               'edit_notification_mode' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.edit_notification_mode',
+                       'config' => array(
+                               'type' => 'select',
+                               'items' => array(
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.0', 0),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.1', 1),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.2', 2)
+                               ),
+                       )
+               ),
+               'edit_notification_defaults' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.edit_notification_defaults',
+                       'displayCond' => 'FIELD:edit_notification_mode:IN:0,1',
+                       'config' => array(
+                               'type' => 'group',
+                               'internal_type' => 'db',
+                               'allowed' => 'be_users,be_groups',
+                               'prepend_tname' => 1,
+                               'size' => '3',
+                               'maxitems' => '100',
+                               'autoSizeMax' => 20,
+                               'show_thumbs' => '1',
+                               'wizards' => array(
+                                       'suggest' => array(
+                                               'type' => 'suggest',
+                                       )
+                               )
+                       )
+               ),
+               'edit_allow_notificaton_settings' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.edit_allow_notificaton_settings',
+                       'config' => array(
+                               'type' => 'check',
+                               'default' => 1,
+                       )
+               ),
+               'publish_notification_mode' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.publish_notification_mode',
+                       'config' => array(
+                               'type' => 'select',
+                               'items' => array(
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.0', 0),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.1', 1),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.2', 2)
+                               ),
+                       )
+               ),
+               'publish_notification_defaults' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.publish_notification_defaults',
+                       'displayCond' => 'FIELD:publish_notification_mode:IN:0,1',
+                       'config' => array(
+                               'type' => 'group',
+                               'internal_type' => 'db',
+                               'allowed' => 'be_users,be_groups',
+                               'prepend_tname' => 1,
+                               'size' => '3',
+                               'maxitems' => '100',
+                               'autoSizeMax' => 20,
+                               'show_thumbs' => '1',
+                               'wizards' => array(
+                                       'suggest' => array(
+                                               'type' => 'suggest',
+                                       )
+                               )
+                       )
+               ),
+               'publish_allow_notificaton_settings' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.publish_allow_notificaton_settings',
+                       'config' => array(
+                               'type' => 'check',
+                               'default' => 1,
+                       )
+               ),
        ),
        'types' => array(
                '0' => array('showitem' => 'title,description,
-                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.users,adminusers,members,stagechg_notification,
+                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.users,adminusers,members,
+                       --div--;LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:tabs.notification_settings,stagechg_notification,edit_notification_mode,edit_notification_defaults,edit_allow_notificaton_settings,publish_notification_mode,publish_notification_defaults,publish_allow_notificaton_settings,
                        --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.mountpoints,db_mountpoints,file_mountpoints,
                        --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.publishing,publish_time,unpublish_time,
                        --div--;LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_filemounts.tabs.staging,custom_stages,
@@ -247,9 +322,48 @@ $TCA['sys_workspace_stage'] = array(
                                'type' => 'passthrough',
                        )
                ),
+               'notification_mode' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace_stage.notification_mode',
+                       'config' => array(
+                               'type' => 'select',
+                               'items' => array(
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.0', 0),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.1', 1),
+                                       array('LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace.notification_mode.2', 2)
+                               ),
+                       )
+               ),
+               'notification_defaults' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace_stage.notification_defaults',
+                       'displayCond' => 'FIELD:notification_mode:IN:0,1',
+                       'config' => array(
+                               'type' => 'group',
+                               'internal_type' => 'db',
+                               'allowed' => 'be_users,be_groups',
+                               'prepend_tname' => 1,
+                               'size' => '3',
+                               'maxitems' => '100',
+                               'autoSizeMax' => 20,
+                               'show_thumbs' => '1',
+                               'wizards' => array(
+                                       'suggest' => array(
+                                               'type' => 'suggest',
+                                       )
+                               )
+                       )
+               ),
+               'allow_notificaton_settings' => array(
+                       'label' => 'LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xml:sys_workspace_stage.allow_notificaton_settings',
+                       'config' => array(
+                               'type' => 'check',
+                               'default' => 1,
+                       )
+               ),
        ),
        'types' => array(
-               '0' => array('showitem' => 'title,responsible_persons,default_mailcomment'
+               '0' => array('showitem' => '
+                       --div--;LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xlf:tabs.general,title,responsible_persons,
+                       --div--;LLL:EXT:workspaces/Resources/Private/Language/locallang_db.xlf:tabs.notification_settings,notification_mode,notification_defaults,allow_notificaton_settings,default_mailcomment'
                )
        )
 );
@@ -275,4 +389,4 @@ if (isset($GLOBALS['TYPO3_CONF_VARS']['BE']['elementVersioningOnly'])
 }
 
 
-?>
\ No newline at end of file
+?>