File indexing completed on 2025-05-25 05:30:30
0001 <?php 0002 /** 0003 * ocs-webserver 0004 * 0005 * Copyright 2016 by pling GmbH. 0006 * 0007 * This file is part of ocs-webserver. 0008 * 0009 * This program is free software: you can redistribute it and/or modify 0010 * it under the terms of the GNU Affero General Public License as 0011 * published by the Free Software Foundation, either version 3 of the 0012 * License, or (at your option) any later version. 0013 * 0014 * This program is distributed in the hope that it will be useful, 0015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 * GNU Affero General Public License for more details. 0018 * 0019 * You should have received a copy of the GNU Affero General Public License 0020 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 **/ 0022 ?> 0023 <h3>Übersicht eMail-Templates</h3> 0024 <?= $this->partial('yui.phtml'); ?> 0025 0026 0027 <form id="filter"> 0028 <fieldset> 0029 <legend>Filter</legend> 0030 0031 <label for="filter_name">Name</label> 0032 <input type="text" id="filter_name" value=""/> 0033 <span id="filter_name_ac"></span> 0034 <span id="filter_reset" class="yui-button yui-push-button"> 0035 <span class="first-child"> 0036 <button type="button">löschen!</button> 0037 </span> 0038 </span> 0039 0040 </fieldset> 0041 </form> 0042 <br/> 0043 <div id="mailTplTable"></div> 0044 <div id="paginator"></div> 0045 <br/><br/> 0046 <a href='/backend/mail/add' class="ui-state-default ui-corner-all button_normal" id="4">Mail Template hinzufügen</a> 0047 0048 <script type="text/javascript"> 0049 $(document).ready(function () { 0050 0051 $("body").addClass("yui-skin-sam"); 0052 0053 var mailTplColumnDefs = [ 0054 {key: "mail_template_id", hidden: true}, 0055 {key: "name", label: "Name", sortable: true}, 0056 {key: "subject", label: "Betreff", sortable: true}, 0057 {key: "text", label: "Text", hidden: true}, 0058 {key: "created_at", label: "Angelegt am", sortable: true}, 0059 {key: "changed_at", label: "Geändert am", sortable: true}, 0060 { 0061 key: 'action', formatter: function (cell, rec, col, data) { 0062 cell.innerHTML = '<button type="button" name="editData" id="editData" data-row_id="' + rec._oData.mail_template_id + '">Edit</button>'; 0063 } 0064 } 0065 ]; 0066 0067 var mailTplFieldDefs = [ 0068 {key: "mail_template_id"}, 0069 {key: "name"}, 0070 {key: "subject"}, 0071 {key: "text"}, 0072 {key: "created_at", parser: "datetime"}, 0073 {key: "changed_at", parser: "datetime"} 0074 ]; 0075 0076 var mailTplDataSource = new YAHOO.util.XHRDataSource("/backend/mail/index-ajax"); 0077 mailTplDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 0078 mailTplDataSource.responseSchema = { 0079 fields: mailTplFieldDefs, 0080 resultsList: 'results', 0081 metaFields: {totalRecords: "totalRecords"} 0082 }; 0083 0084 var mailTplConfig = { 0085 dynamicData: true, 0086 generateRequest: function (state, table) { 0087 var query = '?start=' + state.pagination.recordOffset; 0088 query += '&count=' + state.pagination.rowsPerPage; 0089 0090 if (state.sortedBy) { 0091 query += '&sort=' + state.sortedBy.key; 0092 query += '&dir=' + state.sortedBy.dir; 0093 } 0094 0095 // Filter 0096 var name = YAHOO.util.Dom.get('filter_name').value; 0097 0098 if (name != '') 0099 query += '&filter[name]=' + name; 0100 0101 return query; 0102 0103 }, 0104 paginator: new YAHOO.widget.Paginator({ 0105 rowsPerPage: 20, 0106 containers: 'paginator', 0107 template: '<strong>Page: {CurrentPageReport}</strong> ' + '<label>Page size: {RowsPerPageDropdown}</label>' + 0108 '<p class="pg-nav">' + 0109 '{FirstPageLink} {PreviousPageLink} {PageLinks}' + 0110 '{NextPageLink} {LastPageLink}' + 0111 '</p>', 0112 // Options for RowsPerPageDropdown component 0113 rowsPerPageDropdownClass: "yui-pg-rpp-options", // default 0114 rowsPerPageOptions: [ 0115 {value: 20, text: "20"}, 0116 {value: 40, text: "40"}, 0117 {value: 100, text: "100"} 0118 ] 0119 }) 0120 }; 0121 0122 0123 var mailTplDataTable = new YAHOO.widget.DataTable("mailTplTable", mailTplColumnDefs, mailTplDataSource, mailTplConfig); 0124 0125 mailTplDataTable.handleDataReturnPayload = function (request, response, payload) { 0126 if (!payload) { 0127 return { 0128 totalRecords: response.meta.totalRecords, 0129 results: response.results 0130 }; 0131 } 0132 0133 payload.totalRecords = response.meta.totalRecords; 0134 return payload; 0135 }; 0136 0137 mailTplDataTable.set("selectionMode", "single"); 0138 mailTplDataTable.subscribe("rowMouseoverEvent", mailTplDataTable.onEventHighlightRow); 0139 mailTplDataTable.subscribe("rowMouseoutEvent", mailTplDataTable.onEventUnhighlightRow); 0140 0141 mailTplDataTable.subscribe("rowDblclickEvent", function (row) { 0142 var dcMember = this.getRecord(row.target); 0143 0144 window.location.href = '/backend/mail/edit/id/' + dcMember.getData('mail_template_id'); 0145 }); 0146 0147 var mailTplFilter = function () { 0148 var query = mailTplConfig.generateRequest(mailTplDataTable.getState(), mailTplDataTable); 0149 mailTplDataSource.sendRequest(query, mailTplDataTable.onDataReturnInitializeTable, mailTplDataTable); 0150 }; 0151 0152 new YAHOO.widget.AutoComplete( 0153 'filter_name', 0154 'filter_name_ac', 0155 new YAHOO.util.FunctionDataSource(mailTplFilter), 0156 {minQueryLength: 0, queryDelay: 0.5} 0157 ); 0158 0159 YAHOO.util.Event.addListener('filter_reset', 'click', function () { 0160 YAHOO.util.Dom.get('filter').reset(); 0161 mailTplFilter(); 0162 }); 0163 0164 0165 var onContextMenuClick = function (p_sType, p_aArgs, p_myDataTable) { 0166 var task = p_aArgs[1]; 0167 if (task) { 0168 // Extract which TR element triggered the context menu 0169 var elRow = this.contextEventTarget; 0170 elRow = p_myDataTable.getTrEl(elRow); 0171 0172 if (elRow) { 0173 var oRecord = p_myDataTable.getRecord(elRow); 0174 var itemId = oRecord.getData("mail_template_id"); 0175 switch (task.index) { 0176 case 0: 0177 window.location = '/backend/mail/edit/id/' + oRecord.getData("mail_template_id"); 0178 break; 0179 case 1: // Delete row upon confirmation 0180 if (confirm("Are you shure to delete this project " + 0181 projectId + " (" + 0182 oRecord.getData("name") + ")?")) { 0183 0184 $.post('/backend/mail/delete/', {'id': itemId}, function (result) { 0185 p_myDataTable.deleteRow(elRow); 0186 }); 0187 } 0188 break; 0189 default: 0190 alert('error: nothing to do.'); 0191 break; 0192 } 0193 } 0194 } 0195 }; 0196 0197 0198 var mailTplContextMenu = new YAHOO.widget.ContextMenu("projectcontextmenu", 0199 {trigger: mailTplDataTable.getTbodyEl()}); 0200 mailTplContextMenu.addItem("bearbeiten"); 0201 // mailTplContextMenu.addItem("löschen"); 0202 0203 // Render the ContextMenu instance to the parent container of the DataTable 0204 mailTplContextMenu.render("mailTplTable"); 0205 mailTplContextMenu.clickEvent.subscribe(onContextMenuClick, mailTplDataTable); 0206 0207 $('body').on("click", '[name=editData]', function (e) { 0208 e.preventDefault(); 0209 row_id = $(this).data('row_id'); 0210 window.location.href = '/backend/mail/edit/id/' + row_id; 0211 }); 0212 0213 }); 0214 </script>