Browse files

- Move action files map from index.php to steps' func.inc files

  • Loading branch information...
1 parent 88007cf commit 68d2d541002017dae51127aa05af58d19916655b @alecpl alecpl committed Jan 16, 2011
Showing with 67 additions and 43 deletions.
  1. +3 −41 index.php
  2. +29 −1 program/include/rcmail.php
  3. +10 −0 program/steps/addressbook/func.inc
  4. +14 −1 program/steps/mail/func.inc
  5. +11 −0 program/steps/settings/func.inc
View
44 index.php
@@ -194,53 +194,13 @@
}
-// map task/action to a certain include file
-$action_map = array(
- 'mail' => array(
- 'preview' => 'show.inc',
- 'print' => 'show.inc',
- 'moveto' => 'move_del.inc',
- 'delete' => 'move_del.inc',
- 'send' => 'sendmail.inc',
- 'expunge' => 'folders.inc',
- 'purge' => 'folders.inc',
- 'remove-attachment' => 'attachments.inc',
- 'display-attachment' => 'attachments.inc',
- 'upload' => 'attachments.inc',
- 'group-expand' => 'autocomplete.inc',
- ),
-
- 'addressbook' => array(
- 'add' => 'edit.inc',
- 'group-create' => 'groups.inc',
- 'group-rename' => 'groups.inc',
- 'group-delete' => 'groups.inc',
- 'group-addmembers' => 'groups.inc',
- 'group-delmembers' => 'groups.inc',
- ),
-
- 'settings' => array(
- 'folders' => 'folders.inc',
- 'rename-folder' => 'folders.inc',
- 'delete-folder' => 'folders.inc',
- 'subscribe' => 'folders.inc',
- 'unsubscribe' => 'folders.inc',
- 'purge' => 'folders.inc',
- 'folder-size' => 'folders.inc',
- 'add-identity' => 'edit_identity.inc',
- )
-);
-
// include task specific functions
if (is_file($incfile = 'program/steps/'.$RCMAIL->task.'/func.inc'))
include_once($incfile);
// allow 5 "redirects" to another action
$redirects = 0; $incstep = null;
while ($redirects < 5) {
- $stepfile = !empty($action_map[$RCMAIL->task][$RCMAIL->action]) ?
- $action_map[$RCMAIL->task][$RCMAIL->action] : strtr($RCMAIL->action, '-', '_') . '.inc';
-
// execute a plugin action
if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
$RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
@@ -251,7 +211,9 @@
break;
}
// try to include the step file
- else if (is_file($incfile = 'program/steps/'.$RCMAIL->task.'/'.$stepfile)) {
+ else if (($stepfile = $RCMAIL->get_action_file())
+ && is_file($incfile = 'program/steps/'.$RCMAIL->task.'/'.$stepfile)
+ ) {
include($incfile);
$redirects++;
}
View
30 program/include/rcmail.php
@@ -115,6 +115,7 @@ class rcmail
private $texts;
private $books = array();
+ private $action_map = array();
/**
@@ -1322,6 +1323,33 @@ public static function setcookie($name, $value, $exp = 0)
setcookie($name, $value, $exp, $cookie['path'], $cookie['domain'],
rcube_https_check(), true);
}
-}
+ /**
+ * Registers action aliases for current task
+ *
+ * @param array $map Alias-to-filename hash array
+ */
+ public function register_action_map($map)
+ {
+ if (is_array($map)) {
+ foreach ($map as $idx => $val) {
+ $this->action_map[$idx] = $val;
+ }
+ }
+ }
+
+ /**
+ * Returns current action filename
+ *
+ * @param array $map Alias-to-filename hash array
+ */
+ public function get_action_file()
+ {
+ if (!empty($this->action_map[$this->action])) {
+ return $this->action_map[$this->action];
+ }
+
+ return strtr($this->action, '-', '_') . '.inc';
+ }
+}
View
10 program/steps/addressbook/func.inc
@@ -293,3 +293,13 @@ $OUTPUT->add_handlers(array(
'recordscountdisplay' => 'rcmail_rowcount_display',
'searchform' => array($OUTPUT, 'search_form')
));
+
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'add' => 'edit.inc',
+ 'group-create' => 'groups.inc',
+ 'group-rename' => 'groups.inc',
+ 'group-delete' => 'groups.inc',
+ 'group-addmembers' => 'groups.inc',
+ 'group-delmembers' => 'groups.inc',
+));
View
15 program/steps/mail/func.inc
@@ -1757,4 +1757,17 @@ $OUTPUT->add_handlers(array(
'searchform' => array($OUTPUT, 'search_form'),
));
-
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'preview' => 'show.inc',
+ 'print' => 'show.inc',
+ 'moveto' => 'move_del.inc',
+ 'delete' => 'move_del.inc',
+ 'send' => 'sendmail.inc',
+ 'expunge' => 'folders.inc',
+ 'purge' => 'folders.inc',
+ 'remove-attachment' => 'attachments.inc',
+ 'display-attachment' => 'attachments.inc',
+ 'upload' => 'attachments.inc',
+ 'group-expand' => 'autocomplete.inc',
+));
View
11 program/steps/settings/func.inc
@@ -764,3 +764,14 @@ $OUTPUT->add_handlers(array(
'identitieslist' => 'rcmail_identities_list',
));
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'folders' => 'folders.inc',
+ 'rename-folder' => 'folders.inc',
+ 'delete-folder' => 'folders.inc',
+ 'subscribe' => 'folders.inc',
+ 'unsubscribe' => 'folders.inc',
+ 'purge' => 'folders.inc',
+ 'folder-size' => 'folders.inc',
+ 'add-identity' => 'edit_identity.inc',
+));

0 comments on commit 68d2d54

Please sign in to comment.