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> 0032 <input type="text" id="filter_firstname" value=""/> 0033 <span id="filter_firstname_ac"></span> 0034 0035 <label for="filter_lastname">Nachname</label> 0036 <input type="text" id="filter_lastname" value=""/> 0037 <span id="filter_lastname_ac"></span> 0038 0039 <label for="filter_username">Benutzername</label> 0040 <input type="text" id="filter_username" value=""/> 0041 <span id="filter_username_ac"></span> 0042 0043 <label for="filter_mail">E-Mail</label> 0044 <input type="text" id="filter_mail" value=""/> 0045 <span id="filter_mail_ac"></span> 0046 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>