1: <?php
2: /**
3: * DIMP Base Class - provides dynamic view functions.
4: *
5: * Copyright 2005-2012 Horde LLC (http://www.horde.org/)
6: *
7: * See the enclosed file COPYING for license information (GPL). If you
8: * did not receive this file, see http://www.horde.org/licenses/gpl.
9: *
10: * @author Michael Slusarz <slusarz@horde.org>
11: * @category Horde
12: * @license http://www.horde.org/licenses/gpl GPL
13: * @package IMP
14: */
15: class IMP_Dimp
16: {
17: /**
18: * Output a dimp-style action (menubar) link.
19: *
20: * @param array $params A list of parameters:
21: * - app: (string) The application to load the icon from.
22: * - class: (string) The CSS classname to use for the link.
23: * - icon: (string) The icon CSS classname.
24: * - id: (string) The DOM ID of the link.
25: * - title: (string) The title string.
26: *
27: * @return string An HTML link to $url.
28: */
29: static public function actionButton($params = array())
30: {
31: return Horde::link(
32: '',
33: '',
34: empty($params['class']) ? '' : $params['class'],
35: '',
36: '',
37: '',
38: Horde::getAccessKey($params['title']),
39: empty($params['id']) ? array() : array('id' => $params['id']),
40: true
41: ) . (empty($params['icon'])
42: ? ''
43: : '<span class="iconImg dimpaction' . $params['icon'] . '"></span>').
44: $params['title'] . '</a>';
45: }
46:
47: /**
48: * Output everything up to, and including, the <body> tag.
49: *
50: * @param string $title The title of the page.
51: * @param array $scripts Any additional scripts that need to be loaded.
52: * Each entry contains the three elements necessary
53: * for a Horde::addScriptFile() call.
54: */
55: static public function header($title, $scripts = array())
56: {
57: // Need to include script files before we start output
58: $core_scripts = array(
59: array('effects.js', 'horde'),
60: array('sound.js', 'horde'),
61: array('horde.js', 'horde'),
62: array('dimpcore.js', 'imp'),
63: array('indices.js', 'imp'),
64: array('growler.js', 'horde')
65: );
66: foreach (array_merge($core_scripts, $scripts) as $val) {
67: call_user_func_array(array('Horde', 'addScriptFile'), $val);
68: }
69:
70: $page_title = $GLOBALS['registry']->get('name');
71: if (!empty($title)) {
72: $page_title .= ' :: ' . $title;
73: }
74:
75: include IMP_BASE . '/templates/common-header.inc';
76:
77: // Send what we have currently output so the browser can start
78: // loading CSS/JS. See:
79: // http://developer.yahoo.com/performance/rules.html#flush
80: echo Horde::endBuffer();
81: flush();
82: }
83:
84: /**
85: * Build data structure needed by DimpCore javascript to display message
86: * log information.
87: *
88: * @var string $msg_id The Message-ID header of the message.
89: *
90: * @return array An array of information that can be parsed by
91: * DimpCore.updateInfoList().
92: */
93: static public function getMsgLogInfo($msg_id)
94: {
95: $ret = array();
96:
97: foreach (IMP_Maillog::parseLog($msg_id) as $val) {
98: $ret[] = array_map('htmlspecialchars', array(
99: 'm' => $val['msg'],
100: 't' => $val['action']
101: ));
102: }
103:
104: return $ret;
105: }
106:
107: }
108: