summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2007-09-19 06:29:28 +0000
committerthomascube <thomas@roundcube.net>2007-09-19 06:29:28 +0000
commit5eee009671d773cb3ebef5beca6ad47c919ac4c7 (patch)
treed7e74e8c1523579380fb4c16710b1c88a9cd8508 /program
parent104ee38b205d125a002b04adb704178897bae057 (diff)
Allow vars and PHP code in templates; improved page title; fixed #1484395
Diffstat (limited to 'program')
-rw-r--r--program/include/rcmail_template.inc66
-rw-r--r--program/js/app.js26
-rw-r--r--program/steps/mail/check_recent.inc2
-rw-r--r--program/steps/mail/func.inc10
-rw-r--r--program/steps/mail/list.inc3
-rw-r--r--program/steps/settings/func.inc5
6 files changed, 91 insertions, 21 deletions
diff --git a/program/include/rcmail_template.inc b/program/include/rcmail_template.inc
index 4acc717b8..734032e9e 100644
--- a/program/include/rcmail_template.inc
+++ b/program/include/rcmail_template.inc
@@ -322,6 +322,13 @@ class rcmail_template extends rcube_html_page
join(',', $args));
}
+ // add command to set page title
+ if ($this->ajax_call && !empty($this->pagetitle))
+ $out .= sprintf(
+ "this.set_pagetitle('%s');\n",
+ JQ((!empty($this->config['product_name']) ? $this->config['product_name'].' :: ' : '') . $this->pagetitle)
+ );
+
return $out;
}
@@ -453,10 +460,15 @@ class rcmail_template extends rcube_html_page
// include a file
case 'include':
$path = realpath($this->config['skin_path'].$attrib['file']);
- if (filesize($path) && ($fp = @fopen($path, 'r')))
+ if (filesize($path))
{
- $incl = fread($fp, filesize($path));
- fclose($fp);
+ if ($this->config['skin_include_php'])
+ $incl = $this->include_php($path);
+ else if ($fp = @fopen($path, 'r'))
+ {
+ $incl = fread($fp, filesize($path));
+ fclose($fp);
+ }
return $this->parse_xml($incl);
}
break;
@@ -494,13 +506,59 @@ class rcmail_template extends rcube_html_page
}
break;
- }
+
+ // return variable
+ case 'var':
+ $var = explode(':', $attrib['name']);
+ $name = $var[1];
+ $value = '';
+
+ switch ($var[0])
+ {
+ case 'env':
+ $value = $this->env[$name];
+ break;
+ case 'config':
+ $value = $this->config[$name];
+ if (is_array($value) && $value[$_SESSION['imap_host']])
+ $value = $value[$_SESSION['imap_host']];
+ break;
+ case 'request':
+ $value = get_input_value($name, RCUBE_INPUT_GPC);
+ break;
+ case 'session':
+ $value = $_SESSION[$name];
+ break;
+ }
+
+ if (is_array($value))
+ $value = join(", ", $value);
+
+ return Q($value);
+ }
return '';
}
/**
+ * Include a specific file and return it's contents
+ *
+ * @param string File path
+ * @return string Contents of the processed file
+ */
+ function include_php($file)
+ {
+ ob_start();
+ @include($file);
+ $out = ob_get_contents();
+ ob_end_clean();
+
+ return $out;
+ }
+
+
+ /**
* Create and register a button
*
* @param array Button attributes
diff --git a/program/js/app.js b/program/js/app.js
index 506683502..9693ff53d 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2943,6 +2943,14 @@ function rcube_webmail()
};
+ // write to the document/window title
+ this.set_pagetitle = function(title)
+ {
+ if (title && document.title)
+ document.title = title;
+ }
+
+
// display a system message
this.display_message = function(msg, type, hold)
{
@@ -3129,9 +3137,6 @@ function rcube_webmail()
if (!this.gui_objects.mailboxlist)
return false;
- if (mbox==this.env.mailbox)
- set_title = true;
-
var reg, text_obj;
var item = this.get_folder_li(mbox);
mbox = String(mbox).toLowerCase().replace(this.identifier_expr, '');
@@ -3158,13 +3163,16 @@ function rcube_webmail()
if (set_title && document.title)
{
var doc_title = String(document.title);
+ var new_title = "";
if (count && doc_title.match(reg))
- document.title = doc_title.replace(reg, '('+count+') ');
+ new_title = doc_title.replace(reg, '('+count+') ');
else if (count)
- document.title = '('+count+') '+doc_title;
+ new_title = '('+count+') '+doc_title;
else
- document.title = doc_title.replace(reg, '');
+ new_title = doc_title.replace(reg, '');
+
+ this.set_pagetitle(new_title);
}
};
@@ -3318,7 +3326,8 @@ function rcube_webmail()
ctype = ctype_array[0];
}
- this.set_busy(false);
+ if (request_obj.__lock)
+ this.set_busy(false);
console.log(request_obj.get_text());
@@ -3381,8 +3390,7 @@ function rcube_webmail()
}
this.set_busy(true, 'checkingmail');
- var d = new Date();
- this.http_request('check-recent', '_t='+d.getTime());
+ this.http_request('check-recent', '_t='+(new Date().getTime()), true);
};
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index 119d481ab..a2100f1d2 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -31,7 +31,7 @@ foreach ($a_mailboxes as $mbox_name)
$unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE);
$OUTPUT->set_env('messagecount', $count);
- $OUTPUT->command('set_unread_count', $mbox_name, $unread_count);
+ $OUTPUT->command('set_unread_count', $mbox_name, $unread_count, true);
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
$OUTPUT->command('set_quota', $IMAP->get_quota());
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 9f4c714c4..0712ef8df 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -75,6 +75,10 @@ if ($CONFIG['junk_mbox'])
if (!$OUTPUT->ajax_call)
rcube_add_label('checkingmail', 'deletemessage', 'movemessagetotrash');
+// set page title
+if (empty($_action) || $_action == 'list')
+ $OUTPUT->set_pagetitle(rcube_charset_convert($IMAP->get_mailbox_name(), 'UTF-7'));
+
// return the message list as HTML table
@@ -189,11 +193,7 @@ function rcmail_message_list($attrib)
// no messages in this mailbox
if (!sizeof($a_headers))
- {
- $out .= sprintf('<tr><td colspan="%d">%s</td></tr>',
- sizeof($a_show_cols)+2,
- Q(rcube_label('nomessagesfound')));
- }
+ $OUTPUT->show_message('nomessagesfound', 'notice');
$a_js_message_arr = array();
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index 6c727068d..568f3d58c 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -58,7 +58,8 @@ $OUTPUT->command('set_unread_count', $mbox_name, $unseen);
// add message rows
if (isset($a_headers) && count($a_headers))
rcmail_js_message_list($a_headers);
-
+else
+ $OUTPUT->show_message('nomessagesfound', 'notice');
// send response
$OUTPUT->send();
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index ec9001f70..18e8e523d 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -26,7 +26,10 @@ $sql_result = $DB->query("SELECT username, mail_host FROM ".get_table_name('user
$_SESSION['user_id']);
if ($USER_DATA = $DB->fetch_assoc($sql_result))
- $OUTPUT->set_pagetitle(sprintf('%s %s@%s', rcube_label('settingsfor'), $USER_DATA['username'], $USER_DATA['mail_host']));
+{
+ $username = $USER_DATA['username'] . (!strpos($USER_DATA['username'], '@') ? '@'.$USER_DATA['mail_host'] : '');
+ $OUTPUT->set_pagetitle(sprintf('%s %s', rcube_label('settingsfor'), $username));
+}