Allow vars and PHP code in templates; improved page title; fixed #1484395

release-0.6
thomascube 17 years ago
parent 104ee38b20
commit 5eee009671

@ -6,6 +6,7 @@ AddType text/x-component .htc
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
</IfModule>
<IfModule mod_php5.c>
@ -13,6 +14,7 @@ AddType text/x-component .htc
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
</IfModule>
<FilesMatch "(\.inc|\~)$">

@ -1,6 +1,14 @@
CHANGELOG RoundCube Webmail
---------------------------
2007/09/18 (thomasb)
----------
- Eval PHP code in template includes (if configured)
- Show message when folder is empty. Mo more static text in table (#1484395)
- Only display unread count in page title when new messages arrived
- Show mailbox name in page title
2007/09/09 (thomasb)
----------
- Fixed wrong delete button tooltip (#1483965)

@ -87,6 +87,9 @@ $rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size');
// relative path to the skin folder
$rcmail_config['skin_path'] = 'skins/default/';
// inludes shloud be interpreted as PHP files
$rcmail_config['skin_include_php'] = true;
// use this folder to store temp files (must be writebale for apache user)
$rcmail_config['temp_dir'] = 'temp/';

@ -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,12 +506,58 @@ 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
*

@ -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);
};

@ -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());

@ -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();

@ -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();

@ -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));
}

Loading…
Cancel
Save