File indexing completed on 2024-06-23 05:51:19

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>Alle Mitgleider</h3>
0024 <?= $this->partial('yui.phtml'); ?>
0025 
0026 
0027 <form id="filter">
0028     <fieldset>
0029         <legend>Filter</legend>
0030 
0031         <label for="filter_firstname">Vorname</label> &nbsp;
0032         <input type="text" id="filter_firstname" value=""/>
0033         <span id="filter_firstname_ac"></span>
0034                                                       &nbsp;&nbsp;&nbsp;
0035         <label for="filter_lastname">Nachname</label> &nbsp;
0036         <input type="text" id="filter_lastname" value=""/>
0037         <span id="filter_lastname_ac"></span>
0038                                                       &nbsp;&nbsp;&nbsp;
0039         <label for="filter_username">Benutzername</label> &nbsp;
0040         <input type="text" id="filter_username" value=""/>
0041         <span id="filter_username_ac"></span>
0042                                                       &nbsp;&nbsp;&nbsp;
0043         <label for="filter_mail">E-Mail</label> &nbsp;
0044         <input type="text" id="filter_mail" value=""/>
0045         <span id="filter_mail_ac"></span>
0046                                                       &nbsp;&nbsp;&nbsp;
0047   <span id="filter_reset" class="yui-button yui-push-button">
0048             <span class="first-child"> 
0049                 <button type="button">löschen!</button> 
0050             </span>
0051   </span>
0052 
0053     </fieldset>
0054 </form>
0055 <br/>
0056 <div id="memberTable"></div>
0057 <div id="paginator"></div>
0058 
0059 <script type="text/javascript">
0060     $(document).ready(function () {
0061 
0062         $("body").addClass("yui-skin-sam");
0063 
0064         var memberColumnDefs = [
0065             {key: "member_id", hidden: true},
0066             {key: "firstname", label: "Vorname", sortable: true},
0067             {key: "lastname", label: "Nachname", sortable: true},
0068             {key: "username", label: "Benutzername", sortable: true},
0069             {key: "mail", label: "E-Mail", sortable: true},
0070             {key: "paypal_mail", label: "PayPal Mail", sortable: true},
0071             {key: "paypal_valid_status", label: "PayPal Valid", sortable: true, options: {'': '', '100': 'Valid', '500': 'Invalid', '501': 'Can only receive money from homepage', '502': 'Can not receive personal payments', '503': 'This recipient is currently unable to receive money'}},
0072             {key: "wallet_address", label: "Bitcoin Address", sortable: true, },
0073             {key: "created_at", label: "Angemeldet am", sortable: true},
0074             {key: "last_online", label: "Zuletzt online", sortable: true},
0075             {key: "mail_checked", label: "Active", sortable: false},
0076             {key: "agb", label: "AGB", sortable: false},
0077             {key: "newsletter", label: "NL", sortable: false}
0078         ];
0079 
0080         var memberFieldDefs = [
0081             {key: "member_id"},
0082             {key: "firstname"},
0083             {key: "lastname"},
0084             {key: "username"},
0085             {key: "mail"},
0086             {key: "paypal_mail"},
0087             {key: "paypal_valid_status"},
0088             {key: "wallet_address"},
0089             {key: "created_at", parser: "datetime"},
0090             {key: "last_online", parser: "datetime"},
0091             {key: "mail_checked"},
0092             {key: "agb"},
0093             {key: "newsletter"}
0094         ];
0095 
0096         var memberDataSource = new YAHOO.util.XHRDataSource("/backend/member/getmember");
0097         memberDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
0098         memberDataSource.responseSchema = {
0099             fields: memberFieldDefs,
0100             resultsList: 'results',
0101             metaFields: {totalRecords: "totalRecords"}
0102         };
0103 
0104         var memberConfig = {
0105             dynamicData: true,
0106             generateRequest: function (state, table) {
0107                 var query = '?start=' + state.pagination.recordOffset;
0108                 query += '&count=' + state.pagination.rowsPerPage;
0109 
0110                 if (state.sortedBy) {
0111                     query += '&sort=' + state.sortedBy.key;
0112                     query += '&dir=' + state.sortedBy.dir;
0113                 }
0114 
0115                 // Filter
0116                 var firstname = YAHOO.util.Dom.get('filter_firstname').value;
0117                 var lastname = YAHOO.util.Dom.get('filter_lastname').value;
0118                 var mail = YAHOO.util.Dom.get('filter_mail').value;
0119                 var username = YAHOO.util.Dom.get('filter_username').value;
0120 
0121                 if (firstname != '')
0122                     query += '&filter[firstname]=' + firstname;
0123 
0124                 if (lastname != '')
0125                     query += '&filter[lastname]=' + lastname;
0126 
0127                 if (mail != '')
0128                     query += '&filter[mail]=' + mail;
0129 
0130                 if (username != '')
0131                     query += '&filter[username]=' + username;
0132 
0133                 return query;
0134 
0135             },
0136             paginator: new YAHOO.widget.Paginator({
0137                 rowsPerPage: 20,
0138                 containers: 'paginator',
0139                 template: '<strong>Page: {CurrentPageReport}</strong> ' + '<label>Page size: {RowsPerPageDropdown}</label>' +
0140                 '<p class="pg-nav">' +
0141                 '{FirstPageLink} {PreviousPageLink} {PageLinks}' +
0142                 '{NextPageLink} {LastPageLink}' +
0143                 '</p>',
0144                 // Options for RowsPerPageDropdown component
0145                 rowsPerPageDropdownClass: "yui-pg-rpp-options", // default
0146                 rowsPerPageOptions: [
0147                     {value: 20, text: "20"},
0148                     {value: 40, text: "40"},
0149                     {value: 100, text: "100"}
0150                 ]
0151             })
0152         };
0153 
0154         var memberDataTable = new YAHOO.widget.DataTable("memberTable", memberColumnDefs, memberDataSource, memberConfig);
0155 
0156         memberDataTable.handleDataReturnPayload = function (request, response, payload) {
0157             if (!payload) {
0158                 return {
0159                     totalRecords: response.meta.totalRecords,
0160                     results: response.results
0161                 };
0162             }
0163 
0164             payload.totalRecords = response.meta.totalRecords;
0165             return payload;
0166         };
0167 
0168         memberDataTable.set("selectionMode", "single");
0169         memberDataTable.subscribe("rowMouseoverEvent", memberDataTable.onEventHighlightRow);
0170         memberDataTable.subscribe("rowMouseoutEvent", memberDataTable.onEventUnhighlightRow);
0171 
0172         memberDataTable.subscribe("rowDblclickEvent", function (row) {
0173             var dcMember = this.getRecord(row.target);
0174 
0175             window.location.href = '/backend/member/details/id/' + dcMember.getData('member_id');
0176         });
0177 
0178         var memberFilter = function () {
0179             var query = memberConfig.generateRequest(memberDataTable.getState(), memberDataTable);
0180             memberDataSource.sendRequest(query, memberDataTable.onDataReturnInitializeTable, memberDataTable);
0181         };
0182 
0183         new YAHOO.widget.AutoComplete(
0184             'filter_firstname',
0185             'filter_firstname_ac',
0186             new YAHOO.util.FunctionDataSource(memberFilter),
0187             {minQueryLength: 0, queryDelay: 0.5}
0188         );
0189 
0190         new YAHOO.widget.AutoComplete(
0191             'filter_lastname',
0192             'filter_lastname_ac',
0193             new YAHOO.util.FunctionDataSource(memberFilter),
0194             {minQueryLength: 0, queryDelay: 0.5}
0195         );
0196 
0197         new YAHOO.widget.AutoComplete(
0198             'filter_mail',
0199             'filter_mail_ac',
0200             new YAHOO.util.FunctionDataSource(memberFilter),
0201             {minQueryLength: 0, queryDelay: 0.5}
0202         );
0203 
0204         new YAHOO.widget.AutoComplete(
0205             'filter_username',
0206             'filter_username_ac',
0207             new YAHOO.util.FunctionDataSource(memberFilter),
0208             {minQueryLength: 0, queryDelay: 0.5}
0209         );
0210 
0211         YAHOO.util.Event.addListener('filter_reset', 'click', function () {
0212             YAHOO.util.Dom.get('filter').reset();
0213             memberFilter();
0214         });
0215 
0216 
0217         var onContextMenuClick = function (p_sType, p_aArgs, p_myDataTable) {
0218             var task = p_aArgs[1];
0219             if (task) {
0220                 // Extract which TR element triggered the context menu
0221                 var elRow = this.contextEventTarget;
0222                 elRow = p_myDataTable.getTrEl(elRow);
0223 
0224                 if (elRow) {
0225                     var oRecord = p_myDataTable.getRecord(elRow);
0226                     switch (task.index) {
0227                         case 0:
0228                             if (confirm("Are you really would activate this member " +
0229                                     oRecord.getData("member_id") + " (" +
0230                                     oRecord.getData("username") + ")? ")) {
0231                                 $.post('/backend/member/activate', {'member_id': oRecord.getData("member_id")}, function (result) {
0232                                     window.location = '/backend/member/';
0233                                 });
0234                             }
0235                             break;
0236                         case 1:
0237                             window.location = '/backend/member/edit/id/' + oRecord.getData("member_id");
0238                             break;
0239                         case 2:     // Delete row upon confirmation
0240                             if (confirm("Are you shure to delete this member " +
0241                                     oRecord.getData("member_id") + " (" +
0242                                     oRecord.getData("username") + ")?")) {
0243                                 $.post('/backend/member/delete', {'member_id': oRecord.getData("member_id")}, function (result) {
0244                                     p_myDataTable.deleteRow(elRow);
0245                                 });
0246                             }
0247                             break;
0248                         default:
0249                             alert('error: nothing to do.');
0250                             break;
0251                     }
0252                 }
0253             }
0254         };
0255 
0256 
0257         var memberContextMenu = new YAHOO.widget.ContextMenu("membercontextmenu",
0258             {trigger: memberDataTable.getTbodyEl()});
0259         memberContextMenu.addItem("aktivieren");
0260         memberContextMenu.addItem("bearbeiten");
0261         memberContextMenu.addItem("löschen");
0262 
0263         // Render the ContextMenu instance to the parent container of the DataTable
0264         memberContextMenu.render("memberTable");
0265         memberContextMenu.clickEvent.subscribe(onContextMenuClick, memberDataTable);
0266 
0267     });
0268 </script>