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> &nbsp;
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>