PageRenderTime 26ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/kronolith/templates/contacts/contacts.inc

https://github.com/wrobel/horde-fw3
PHP | 202 lines | 188 code | 14 blank | 0 comment | 27 complexity | 052a41eff30e8734967f7679e7b5fd3a MD5 | raw file
Possible License(s): LGPL-2.0, AGPL-1.0, LGPL-2.1, BSD-2-Clause
  1. <script type="text/javascript">
  2. <!--
  3. var display = decodeURIComponent("<?php echo (!empty($display) ? rawurlencode($display) : 'name') ?>");
  4. function changeDisplay()
  5. {
  6. var listDisplay = document.contacts.display;
  7. if (listDisplay.options[listDisplay.selectedIndex].value != display) {
  8. display = listDisplay.options[listDisplay.selectedIndex].value;
  9. s = document.contacts.search_results;
  10. for(var i = 0; i < s.length; i++) {
  11. var temp = s.options[i].value;
  12. if (temp == "") { continue; }
  13. s.options[i].value = encodeURIComponent(s.options[i].text);
  14. s.options[i].text = decodeURIComponent(temp);
  15. }
  16. d = document.contacts.selected_addresses;
  17. for(var i = 0; i < d.length; i++) {
  18. var temp = d.options[i].value;
  19. if (temp == "") { continue; }
  20. d.options[i].value = encodeURIComponent(d.options[i].text);
  21. d.options[i].text = decodeURIComponent(temp);
  22. }
  23. }
  24. }
  25. function passAddresses()
  26. {
  27. var list = document.contacts.selected_addresses;
  28. var sa = '';
  29. for (var i = 0; i < list.length; i++) {
  30. var item = list.options[i];
  31. if (item.value == '') {
  32. continue;
  33. }
  34. sa += item.value + '|' + item.text + '|';
  35. }
  36. document.contacts.sa.value = sa;
  37. }
  38. function addAddress()
  39. {
  40. var s = document.contacts.search_results;
  41. var d = document.contacts.selected_addresses;
  42. if (s.selectedIndex < 0) {
  43. alert('<?php echo addslashes(_("You must select an address first.")) ?>');
  44. return false;
  45. } else {
  46. for (var i = 0; i < s.length; i++) {
  47. var item = s.options[i];
  48. if (item.value == "") {
  49. continue;
  50. }
  51. if (item.selected) {
  52. d.options[d.length] = new Option(item.text, item.value);
  53. }
  54. }
  55. }
  56. }
  57. function updateMessage()
  58. {
  59. if (parent.opener.closed) {
  60. alert('<?php echo addslashes(_("The Edit Attendees screen is no longer present. Exiting.")) ?>');
  61. this.close();
  62. return;
  63. }
  64. if (!parent.opener.document.attendeesForm) {
  65. alert('<?php echo addslashes(_("You can only use this form from the Edit Attendees screen.")) ?>');
  66. this.close();
  67. return;
  68. }
  69. var list = document.contacts.selected_addresses;
  70. var field = parent.opener.document.attendeesForm.newAttendees;
  71. for (var i = 0; i < list.length; i++) {
  72. if (list.options[i].value == '') {
  73. continue;
  74. }
  75. if (display == 'name') {
  76. var address = decodeURIComponent(list.options[i].value);
  77. var fullname = list.options[i].text;
  78. } else {
  79. var address = list.options[i].text;
  80. var fullname = decodeURIComponent(list.options[i].value);
  81. }
  82. if (address.indexOf(':') == -1) {
  83. fullname = fullname.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
  84. address = '"' + fullname + '" <' + address + '>';
  85. }
  86. if (field.value) {
  87. if (!field.value.match(/;\s*$/)) {
  88. field.value = field.value + ',';
  89. }
  90. field.value = field.value + ' ' + address;
  91. } else {
  92. field.value = address;
  93. }
  94. }
  95. parent.opener.document.attendeesForm.submit();
  96. this.close();
  97. }
  98. function removeAddress()
  99. {
  100. var list = document.contacts.selected_addresses;
  101. for (var i = list.length - 1; i > 0; i--) {
  102. if (list.options[i].selected) {
  103. list.options[i] = null;
  104. }
  105. }
  106. }
  107. window.onload = function() {
  108. if (typeof document.getElementById != 'undefined') {
  109. var searchtable = document.getElementById('searchtable');
  110. if (searchtable && typeof searchtable.offsetWidth != 'undefined') {
  111. window.innerWidth = searchtable.offsetWidth;
  112. }
  113. }
  114. }
  115. //-->
  116. </script>
  117. <form method="post" name="contacts" onsubmit="passAddresses();" action="contacts.php?nocache=<?php echo md5(mt_rand()) ?>">
  118. <input type="hidden" name="sa" />
  119. <?php Util::pformInput() ?>
  120. <div class="header"><?php echo _("Address Book") ?></div>
  121. <table id="searchtable" width="100%">
  122. <tr>
  123. <td colspan="3" class="light nowrap">
  124. <strong><?php echo Horde::label('search', _("Find")) ?></strong>
  125. <input value="<?php echo htmlspecialchars($search) ?>" id="search" name="search" style="width:150px" />
  126. <?php if (count($source_list) > 1): ?>
  127. <strong><?php echo Horde::label('source', _("in")) ?></strong>
  128. <select id="source" name="source">
  129. <?php foreach ($source_list as $key => $select): ?>
  130. <option value="<?php echo htmlspecialchars($key) ?>"<?php if ($key == $source) echo ' selected="selected"' ?>><?php echo htmlspecialchars($select) ?></option>
  131. <?php endforeach; ?>
  132. </select>
  133. <?php else: ?>
  134. <input name="source" type="hidden" value="<?php echo htmlspecialchars(key($source_list)) ?>" />
  135. <?php endif; ?>
  136. <input type="submit" class="button" value="<?php echo _("Search") ?>" />
  137. </td>
  138. </tr>
  139. <tr>
  140. <td width="45%">
  141. <label for="search_results" class="hidden"><?php echo _("Search results") ?></label>
  142. <select id="search_results" name="search_results" multiple="multiple" size="10" style="width:250px" onchange="document.contacts.search_results[0].selected=false" ondblclick="addAddress()">
  143. <option value=""><?php echo _("* Please select address(es) *") ?></option>
  144. <?php foreach ($addresses as $addr): if (strpos($addr['email'], ',') !== false && strpos($addr['email'], ':') === false) $addr['email'] = $addr['name'] . ': ' . $addr['email']; if ($display == 'email'): ?>
  145. <option value="<?php echo rawurlencode($addr['name']) ?>"><?php echo htmlspecialchars($addr['email']) ?></option>
  146. <?php else: ?>
  147. <option value="<?php echo rawurlencode($addr['email']) ?>"><?php echo htmlspecialchars($addr['name']) ?></option>
  148. <?php endif; endforeach; ?>
  149. </select>
  150. </td>
  151. <td width="10%" align="center">
  152. <input type="button" class="button" onclick="addAddress();" value="<?php echo _("Add") ?> &gt;&gt;" /><br /><br />
  153. <input type="button" class="button" onclick="removeAddress()" value="&lt;&lt; <?php echo _("Remove") ?>" />
  154. </td>
  155. <td width="45%">
  156. <label for="selected_addresses" class="hidden"><?php echo _("Selected addresses") ?></label>
  157. <select id="selected_addresses" name="selected_addresses" multiple="multiple" size="10" style="width:250px" onchange="document.contacts.selected_addresses[0].selected=false">
  158. <option value=""><?php echo _("* Add these by clicking Add *") ?></option>
  159. <?php foreach ($selected_addresses as $value => $text): ?>
  160. <option value="<?php echo htmlspecialchars($value) ?>"><?php echo htmlspecialchars($text) ?></option>
  161. <?php endforeach; ?>
  162. </select>
  163. </td>
  164. </tr>
  165. <tr>
  166. <td colspan="3" class="light nowrap">
  167. <strong><?php echo Horde::label('display', _("Display")) ?></strong>
  168. <select id="display" name="display" onchange="changeDisplay();">
  169. <option value="name"<?php echo $display == 'name' ? ' selected="selected"' : '' ?>><?php echo _("Name") ?></option>
  170. <option value="email"<?php echo $display == 'email' ? ' selected="selected"' : '' ?>><?php echo _("Email Address") ?></option>
  171. </select>
  172. </td>
  173. <td colspan="2">&nbsp;</td>
  174. </tr>
  175. </table>
  176. <div class="rightAlign">
  177. <input type="button" class="button" onclick="updateMessage();" value="<?php echo _("Add to attendees") ?>" />
  178. <input type="button" class="button" onclick="window.close();" value="<?php echo _("Close window") ?>" />
  179. <?php echo Help::link('kronolith', 'invite-addressbook') ?>
  180. </div>
  181. </form>