ruạṛ
adm/style/acp_attachments.html 0100666 0000000 0000000 00000041114 13715656641 0016635 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF U_BACK --> <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a> <!-- ENDIF --> <h1>{L_TITLE}</h1> <p>{L_TITLE_EXPLAIN}</p> <!-- IF S_WARNING --> <div class="errorbox"> <h3>{L_WARNING}</h3> <p>{WARNING_MSG}</p> </div> <!-- ENDIF --> <!-- IF S_NOTIFY --> <div class="successbox"> <h3>{L_NOTIFY}</h3> <p>{NOTIFY_MSG}</p> </div> <!-- ENDIF --> <!-- IF S_UPLOADING_FILES --> <h2>{L_UPLOADING_FILES}</h2> <!-- BEGIN upload --> :: {upload.FILE_INFO}<br /> <!-- IF upload.S_DENIED --><span class="error">{upload.DENIED}</span><!-- ELSEIF upload.ERROR_MSG --><span class="error">{upload.ERROR_MSG}</span><!-- ELSE --><span class="success">{L_SUCCESSFULLY_UPLOADED}</span><!-- ENDIF --> <br /><br /> <!-- END upload --> <!-- ENDIF --> <!-- IF S_ATTACHMENT_SETTINGS --> <form id="attachsettings" method="post" action="{U_ACTION}"> <!-- BEGIN options --> <!-- IF options.S_LEGEND --> <!-- IF not options.S_FIRST_ROW --> </fieldset> <!-- ENDIF --> <fieldset> <legend>{options.LEGEND}</legend> <!-- ELSE --> <dl> <dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt> <dd>{options.CONTENT}</dd> {% if (options.KEY == 'allow_attachments' and S_EMPTY_POST_GROUPS) or (options.KEY == 'allow_pm_attach' and S_EMPTY_PM_GROUPS) %} <dd><span class="error">{{ lang(options.KEY == 'allow_attachments' ? 'NO_EXT_GROUP_ALLOWED_POST' : 'NO_EXT_GROUP_ALLOWED_PM', U_EXTENSION_GROUPS) }}</span></dd> {% endif %} </dl> <!-- ENDIF --> <!-- END options --> </fieldset> <fieldset> <legend>{{ lang('ACP_SUBMIT_CHANGES') }}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> </fieldset> <!-- IF not S_SECURE_DOWNLOADS --> <div class="errorbox"> <p>{L_SECURE_DOWNLOAD_NOTICE}</p> </div> <!-- ENDIF --> <fieldset> <legend>{L_SECURE_TITLE}</legend> <p>{L_DOWNLOAD_ADD_IPS_EXPLAIN}</p> <dl> <dt><label for="ip_hostname">{L_IP_HOSTNAME}{L_COLON}</label></dt> <dd><textarea id="ip_hostname" cols="40" rows="3" name="ips"></textarea></dd> </dl> <dl> <dt><label for="exclude">{L_IP_EXCLUDE}{L_COLON}</label><br /><span>{L_EXCLUDE_ENTERED_IP}</span></dt> <dd><label><input type="radio" id="exclude" name="ipexclude" value="1" class="radio" /> {L_YES}</label> <label><input type="radio" name="ipexclude" value="0" checked="checked" class="radio" /> {L_NO}</label></dd> </dl> <p class="quick"> <input class="button1" type="submit" id="securesubmit" name="securesubmit" value="{L_SUBMIT}" /> </p> </fieldset> <fieldset> <legend>{L_REMOVE_IPS}</legend> <!-- IF S_DEFINED_IPS --> <p>{L_DOWNLOAD_REMOVE_IPS_EXPLAIN}</p> <dl> <dt><label for="remove_ip_hostname">{L_IP_HOSTNAME}{L_COLON}</label></dt> <dd><select name="unip[]" id="remove_ip_hostname" multiple="multiple" size="10">{DEFINED_IPS}</select></dd> </dl> <p class="quick"> <input class="button1" type="submit" id="unsecuresubmit" name="unsecuresubmit" value="{L_SUBMIT}" /> </p> </fieldset> <!-- ELSE --> <p>{L_NO_IPS_DEFINED}</p> <!-- ENDIF --> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSEIF S_EXTENSION_GROUPS --> <!-- IF S_EDIT_GROUP --> <script> // <![CDATA[ function update_image(newimage) { if (newimage == 'no_image') { document.getElementById('image_upload_icon').src = "{ROOT_PATH}images/spacer.gif"; } else { document.getElementById('image_upload_icon').src = "{ROOT_PATH}{IMG_PATH}/" + newimage; } } function show_extensions(elem) { var str = ''; for (i = 0; i < elem.length; i++) { var element = elem.options[i]; if (element.selected) { if (str) { str = str + ', '; } str = str + element.innerHTML; } } if (document.all) { document.all.ext.innerText = str; } else if (document.getElementById('ext').textContent) { document.getElementById('ext').textContent = str; } else if (document.getElementById('ext').firstChild.nodeValue) { document.getElementById('ext').firstChild.nodeValue = str; } } // ]]> </script> <form id="extgroups" method="post" action="{U_ACTION}"> <fieldset> <input type="hidden" name="action" value="{ACTION}" /> <input type="hidden" name="g" value="{GROUP_ID}" /> <legend>{L_LEGEND}</legend> <dl> <dt><label for="group_name">{L_GROUP_NAME}{L_COLON}</label></dt> <dd><input type="text" id="group_name" size="20" maxlength="100" name="group_name" value="{GROUP_NAME}" /></dd> </dl> <dl> <dt><label for="category">{L_SPECIAL_CATEGORY}{L_COLON}</label><br /><span>{L_SPECIAL_CATEGORY_EXPLAIN}</span></dt> <dd>{S_CATEGORY_SELECT}</dd> </dl> <dl> <dt><label for="allowed">{L_ALLOWED}{L_COLON}</label></dt> <dd><input type="checkbox" class="radio" id="allowed" name="allow_group" value="1"<!-- IF ALLOW_GROUP --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="allow_in_pm">{L_ALLOW_IN_PM}{L_COLON}</label></dt> <dd><input type="checkbox" class="radio" id="allow_in_pm" name="allow_in_pm" value="1"<!-- IF ALLOW_IN_PM --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="upload_icon">{L_UPLOAD_ICON}{L_COLON}</label></dt> <dd><select name="upload_icon" id="upload_icon" onchange="update_image(this.options[selectedIndex].value);"> <option value="no_image"<!-- IF S_NO_IMAGE --> selected="selected"<!-- ENDIF -->>{L_NO_IMAGE}</option>{S_FILENAME_LIST} </select></dd> <dd> <img <!-- IF S_NO_IMAGE -->src="{ROOT_PATH}images/spacer.gif"<!-- ELSE -->src="{UPLOAD_ICON_SRC}"<!-- ENDIF --> id="image_upload_icon" alt="" title="" /> </dd> </dl> <dl> <dt><label for="extgroup_filesize">{L_MAX_EXTGROUP_FILESIZE}{L_COLON}</label></dt> <dd><input type="number" id="extgroup_filesize" min="0" max="999999999999999" step="any" name="max_filesize" value="{EXTGROUP_FILESIZE}" /> <select name="size_select">{S_EXT_GROUP_SIZE_OPTIONS}</select></dd> </dl> <dl> <dt><label for="assigned_extensions">{L_ASSIGNED_EXTENSIONS}{L_COLON}</label></dt> <dd><div id="ext">{ASSIGNED_EXTENSIONS}</div> <span>[<a href="{U_EXTENSIONS}">{L_GO_TO_EXTENSIONS}</a> ]</span></dd> <dd><select name="extensions[]" id="assigned_extensions" class="narrow" onchange="show_extensions(this);" multiple="multiple" size="8">{S_EXTENSION_OPTIONS}</select></dd> </dl> <dl> <dt><label for="allowed_forums">{L_ALLOWED_FORUMS}{L_COLON}</label><br /><span>{L_ALLOWED_FORUMS_EXPLAIN}</span></dt> <dd><label><input type="radio" id="allowed_forums" class="radio" name="forum_select" value="0"<!-- IF not S_FORUM_IDS --> checked="checked"<!-- ENDIF --> /> {L_ALLOW_ALL_FORUMS}</label></dd> <dd><label><input type="radio" class="radio" name="forum_select" value="1"<!-- IF S_FORUM_IDS --> checked="checked"<!-- ENDIF --> /> {L_ALLOW_SELECTED_FORUMS}</label></dd> <dd><select name="allowed_forums[]" multiple="multiple" size="8">{S_FORUM_ID_OPTIONS}</select></dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSE --> <form id="extgroups" method="post" action="{U_ACTION}"> <fieldset class="tabulated"> <legend>{L_TITLE}</legend> <table class="table1"> <col class="row1" /><col class="row1" /><col class="row2" /> <thead> <tr> <th>{L_EXTENSION_GROUP}</th> <th>{L_SPECIAL_CATEGORY}</th> <th>{L_OPTIONS}</th> </tr> </thead> <tbody> <!-- BEGIN groups --> <!-- IF groups.S_ADD_SPACER and not groups.S_FIRST_ROW --> <tr> <td class="spacer" colspan="3"> </td> </tr> <!-- ENDIF --> <tr> <td><strong>{groups.GROUP_NAME}</strong> <!-- IF groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>» {L_NOT_ALLOWED_IN_PM}</span> <!-- ELSEIF groups.S_ALLOWED_IN_PM and not groups.S_GROUP_ALLOWED --><br /><span>» {L_ONLY_ALLOWED_IN_PM}</span> <!-- ELSEIF not groups.S_GROUP_ALLOWED and not groups.S_ALLOWED_IN_PM --><br /><span>» {L_NOT_ALLOWED_IN_PM_POST}</span> <!-- ELSE --><br /><span>» {L_ALLOWED_IN_PM_POST}</span><!-- ENDIF --> </td> <td>{groups.CATEGORY}</td> <td align="center" valign="middle" style="white-space: nowrap;"> <a href="{groups.U_EDIT}">{ICON_EDIT}</a> <a href="{groups.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a> </td> </tr> <!-- END groups --> </tbody> </table> <p class="quick"> {L_CREATE_GROUP}{L_COLON} <input type="text" name="group_name" maxlength="30" /> <input class="button2" name="add" type="submit" value="{L_SUBMIT}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ENDIF --> <!-- ELSEIF S_EXTENSIONS --> <form id="add_ext" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_ADD_EXTENSION}</legend> <dl> <dt><label for="add_extension">{L_EXTENSION}</label></dt> <dd><input type="text" id="add_extension" size="20" maxlength="100" name="add_extension" value="{ADD_EXTENSION}" /></dd> </dl> <dl> <dt><label for="extension_group">{L_EXTENSION_GROUP}</label></dt> <dd>{GROUP_SELECT_OPTIONS}</dd> </dl> <p class="quick"> <input type="submit" id="add_extension_check" name="add_extension_check" class="button2" value="{L_SUBMIT}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <form id="change_ext" method="post" action="{U_ACTION}"> <fieldset class="tabulated"> <legend>{L_TITLE}</legend> <table class="table1"> <col class="row1" /><col class="row1" /><col class="row2" /> <thead> <tr> <th>{L_EXTENSION}</th> <th>{L_EXTENSION_GROUP}</th> <th>{L_DELETE}</th> </tr> </thead> <tbody> <!-- BEGIN extensions --> <!-- IF extensions.S_SPACER --> <tr> <td class="spacer" colspan="3"> </td> </tr> <!-- ENDIF --> <tr> <td><strong>{extensions.EXTENSION}</strong></td> <td>{extensions.GROUP_OPTIONS}</td> <td><input type="checkbox" class="radio" name="extension_id_list[]" value="{extensions.EXTENSION_ID}" /><input type="hidden" name="extension_change_list[]" value="{extensions.EXTENSION_ID}" /></td> </tr> <!-- END extensions --> </tbody> </table> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSEIF S_ORPHAN --> <form id="orphan" method="post" action="{U_ACTION}"> <fieldset class="tabulated"> <legend>{L_TITLE}</legend> <div class="pagination top-pagination"> <!-- IF .pagination or TOTAL_FILES --> {L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE} <!-- IF .pagination --> • <!-- INCLUDE pagination.html --> <!-- ELSE --> • {PAGE_NUMBER} <!-- ENDIF --> <!-- ENDIF --> </div> <!-- IF .orphan --> <table class="table1 zebra-table fixed-width-table"> <thead> <tr> <th>{L_FILENAME}</th> <th style="width: 15%;">{L_FILEDATE}</th> <th style="width: 15%;">{L_FILESIZE}</th> <th style="width: 15%;">{L_ATTACH_POST_ID}</th> <th style="width: 15%;">{L_ATTACH_TO_POST}</th> <th style="width: 15%;">{L_DELETE}</th> </tr> </thead> <tbody> <!-- BEGIN orphan --> <tr> <td><a href="{orphan.U_FILE}">{orphan.REAL_FILENAME}</a></td> <td>{orphan.FILETIME}</td> <td>{orphan.FILESIZE}</td> <td><strong>{L_ATTACH_ID}{L_COLON} </strong><input type="number" min="0" max="9999999999" name="post_id[{orphan.ATTACH_ID}]" value="{orphan.POST_ID}" style="width: 75%;" /></td> <td><input type="checkbox" class="radio" name="add[{orphan.ATTACH_ID}]" /></td> <td><input type="checkbox" class="radio" name="delete[{orphan.ATTACH_ID}]" /></td> </tr> <!-- END orphan --> <tr class="row4"> <td colspan="4"> </td> <td class="small"><a href="#" onclick="marklist('orphan', 'add', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'add', false); return false;">{L_UNMARK_ALL}</a></td> <td class="small"><a href="#" onclick="marklist('orphan', 'delete', true); return false;">{L_MARK_ALL}</a> :: <a href="#" onclick="marklist('orphan', 'delete', false); return false;">{L_UNMARK_ALL}</a></td> </tr> </tbody> </table> <!-- ELSE --> <div class="errorbox"> <p>{L_NO_ATTACHMENTS}</p> </div> <!-- ENDIF --> <!-- IF TOTAL_FILES --> <div class="pagination"> {L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE} <!-- IF .pagination --> • <!-- INCLUDE pagination.html --> <!-- ELSE --> • {PAGE_NUMBER} <!-- ENDIF --> </div> <!-- ENDIF --> <!-- IF .orphan --> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> <!-- ENDIF --> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSEIF S_MANAGE --> <form id="attachments" method="post" action="{U_ACTION}"> <fieldset class="tabulated"> <legend>{L_TITLE}</legend> <div class="pagination top-pagination"> <!-- IF .pagination or TOTAL_FILES --> {L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE} <!-- IF .pagination --> • <!-- INCLUDE pagination.html --> <!-- ELSE --> • {PAGE_NUMBER} <!-- ENDIF --> <!-- ENDIF --> </div> <!-- IF .attachments --> <table class="table1 zebra-table fixed-width-table"> <thead> <tr> <th>{L_FILENAME}</th> <th style="width: 15%;">{L_POSTED}</th> <th style="width: 15%;" class="centered-text">{L_FILESIZE}</th> <th style="width: 10%;" class="centered-text">{L_MARK}</th> </tr> </thead> <tbody> {% for attachments in attachments %} <tr> <td> {{ lang('EXTENSION_GROUP') ~ lang('COLON') }} <strong>{{ attachments.EXT_GROUP_NAME }}</strong> {% if attachments.S_IN_MESSAGE %} <br>{{ attachments.L_DOWNLOAD_COUNT }} <br>{{ lang('IN') }} {{ lang('PRIVATE_MESSAGE') }} {% else %} <br><a href="{{ attachments.U_FILE }}"><strong>{{ attachments.REAL_FILENAME }}</strong></a> {% if attachments.COMMENT %}<br>{{ attachments.COMMENT }}{% endif %} <br>{{ attachments.L_DOWNLOAD_COUNT }} <br>{{ lang('TOPIC') ~ lang('COLON') }} <a href="{{ attachments.U_VIEW_TOPIC }}">{{ attachments.TOPIC_TITLE }}</a> {% endif %} </td> <td>{{ attachments.FILETIME }}<br>{{ lang('POST_BY_AUTHOR') }} {{ attachments.ATTACHMENT_POSTER }}</td> <td class="centered-text">{{ attachments.FILESIZE }}</td> <td class="centered-text"><input type="checkbox" class="radio" name="delete[{{ attachments.ATTACH_ID }}]" /></td> </tr> {% endfor %} </tbody> </table> <!-- ELSE --> <div class="errorbox"> <p>{L_NO_ATTACHMENTS}</p> </div> <!-- ENDIF --> <!-- IF TOTAL_FILES --> <div class="pagination"> {L_NUMBER_FILES}{L_COLON} {TOTAL_FILES} • {L_TOTAL_SIZE}{L_COLON} {TOTAL_SIZE} <!-- IF .pagination --> • <!-- INCLUDE pagination.html --> <!-- ELSE --> • {PAGE_NUMBER} <!-- ENDIF --> </div> <!-- ENDIF --> <fieldset class="display-options"> {L_DISPLAY_LOG}{L_COLON} {S_LIMIT_DAYS} {L_SORT_BY}{L_COLON} {S_SORT_KEY} {S_SORT_DIR} <input class="button2" type="submit" value="{L_GO}" name="sort" /> </fieldset> <hr /> <!-- IF .attachments --> <fieldset class="quick"> <input class="button2" type="submit" name="submit" value="{L_DELETE_MARKED}" /><br /> <p class="small"> <a href="#" onclick="marklist('attachments', 'delete', true); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="marklist('attachments', 'delete', false); return false;">{L_UNMARK_ALL}</a> </p> </fieldset> <!-- ENDIF --> {S_FORM_TOKEN} </fieldset> </form> <!-- IF S_ACTION_OPTIONS --> <fieldset> <legend>{L_RESYNC_STATS}</legend> <form id="action_stats_form" method="post" action="{U_ACTION}"> <dl> <dt><label for="action_stats">{L_RESYNC_FILES_STATS}</label><br /><span>{L_RESYNC_FILES_STATS_EXPLAIN}</span></dt> <dd><input type="hidden" name="action" value="stats" /><input class="button2" type="submit" id="action_stats" name="action_stats" value="{L_RUN}" /></dd> </dl> </form> </fieldset> <!-- ENDIF --> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/acp_ban.html 0100666 0000000 0000000 00000011172 13715656641 0015063 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <p>{L_ACP_BAN_EXPLAIN}</p> <h1>{L_TITLE}</h1> <p>{L_EXPLAIN}</p> <script> // <![CDATA[ var ban_length = new Array(); ban_length[-1] = ''; var ban_reason = new Array(); ban_reason[-1] = ''; var ban_give_reason = new Array(); ban_give_reason[-1] = ''; <!-- BEGIN bans --> ban_length['{bans.BAN_ID}'] = '{bans.A_LENGTH}'; <!-- IF bans.A_REASON --> ban_reason['{bans.BAN_ID}'] = '{bans.A_REASON}'; <!-- ENDIF --> <!-- IF bans.A_GIVE_REASON --> ban_give_reason['{bans.BAN_ID}'] = '{bans.A_GIVE_REASON}'; <!-- ENDIF --> <!-- END bans --> function display_details(option) { document.getElementById('unbanlength').value = ban_length[option]; if (option in ban_reason) { document.getElementById('unbanreason').innerHTML = ban_reason[option]; } else { document.getElementById('unbanreason').innerHTML = ''; } if (option in ban_give_reason) { document.getElementById('unbangivereason').innerHTML = ban_give_reason[option]; } else { document.getElementById('unbangivereason').innerHTML = ''; } } // ]]> </script> <form id="acp_ban" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_TITLE}</legend> <dl> <dt><label for="ban">{L_BAN_CELL}{L_COLON}</label></dt> <dd><!-- EVENT acp_ban_cell_prepend --><textarea name="ban" cols="40" rows="3" id="ban"></textarea><!-- EVENT acp_ban_cell_append --></dd> <!-- IF S_USERNAME_BAN --><dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd><!-- ENDIF --> </dl> <dl> <dt><label for="banlength">{L_BAN_LENGTH}{L_COLON}</label></dt> <dd><label for="banlength"><select name="banlength" id="banlength" onchange="if(this.value==-1){document.getElementById('banlengthother').style.display = 'block';}else{document.getElementById('banlengthother').style.display='none';}">{S_BAN_END_OPTIONS}</select></label></dd> <dd id="banlengthother" style="display: none;"><label><input type="text" name="banlengthother" class="inputbox" /><br /><span>{L_YEAR_MONTH_DAY}</span></label></dd> </dl> <dl> <dt><label for="banexclude">{L_BAN_EXCLUDE}{L_COLON}</label><br /><span>{L_BAN_EXCLUDE_EXPLAIN}</span></dt> <dd><label><input type="radio" name="banexclude" value="1" class="radio" /> {L_YES}</label> <label><input type="radio" name="banexclude" id="banexclude" value="0" checked="checked" class="radio" /> {L_NO}</label></dd> </dl> <dl> <dt><label for="banreason">{L_BAN_REASON}{L_COLON}</label></dt> <dd><input name="banreason" type="text" class="text medium" maxlength="255" id="banreason" /></dd> </dl> <dl> <dt><label for="bangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt> <dd><input name="bangivereason" type="text" class="text medium" maxlength="255" id="bangivereason" /></dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <br /><br /> <h1>{L_UNBAN_TITLE}</h1> <p>{L_UNBAN_EXPLAIN}</p> <form id="acp_unban" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_UNBAN_TITLE}</legend> <!-- IF S_BANNED_OPTIONS --> <dl> <dt><label for="unban">{L_BAN_CELL}{L_COLON}</label></dt> <dd><select id="unban" name="unban[]" multiple="multiple" size="10" style="width: 50%" onchange="if (this.selectedIndex > -1) display_details(this.options[this.selectedIndex].value); else display_details(-1);">{BANNED_OPTIONS}</select></dd> </dl> <dl> <dt><label for="unbanlength">{L_BAN_LENGTH}{L_COLON}</label></dt> <dd><input style="border: 0;" type="text" class="text full" readonly="readonly" name="unbanlength" id="unbanlength" /></dd> </dl> <dl> <dt><label for="unbanreason">{L_BAN_REASON}{L_COLON}</label></dt> <dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbanreason" id="unbanreason" rows="5" cols="80"> </textarea></dd> </dl> <dl> <dt><label for="unbangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt> <dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbangivereason" id="unbangivereason" rows="5" cols="80"> </textarea></dd> </dl> <p class="submit-buttons"> <input class="button1" type="submit" id="unbansubmit" name="unbansubmit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="unbanreset" name="unbanreset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> <!-- ELSE --> <p>{L_NO_BAN_CELL}</p> {S_FORM_TOKEN} </fieldset> <!-- ENDIF --> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_contact.html 0100666 0000000 0000000 00000006015 13715656641 0015756 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <script> // <![CDATA[ var form_name = 'acp_contact'; var text_name = 'contact_admin_info'; var load_draft = false; var upload = false; var imageTag = false; // ]]> </script> <a id="maincontent"></a> <h1>{L_ACP_CONTACT_SETTINGS}</h1> <p>{L_ACP_CONTACT_SETTINGS_EXPLAIN}</p> <form id="acp_contact" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_GENERAL_OPTIONS}</legend> <dl> <dt><label for="contact_admin_form_enable">{L_CONTACT_US_ENABLE}{L_COLON}</label><br /><span>{L_CONTACT_US_ENABLE_EXPLAIN}</span></dt> <dd> <label><input type="radio" class="radio" id="contact_admin_form_enable" name="contact_admin_form_enable" value="1"<!-- IF CONTACT_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_ENABLED}</label> <label><input type="radio" class="radio" name="contact_admin_form_enable" value="0"<!-- IF not CONTACT_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_DISABLED}</label> </dd> </dl> </fieldset> <!-- IF CONTACT_US_INFO_PREVIEW --> <fieldset> <legend>{L_CONTACT_US_INFO_PREVIEW}</legend> <p>{CONTACT_US_INFO_PREVIEW}</p> </fieldset> <!-- ENDIF --> <fieldset> <legend>{L_CONTACT_US_INFO}</legend> <p>{L_CONTACT_US_INFO_EXPLAIN}</p> <!-- INCLUDE acp_posting_buttons.html --> <dl class="responsive-columns"> <dt style="width: 90px;" id="color_palette_placeholder" data-color-palette="v" data-height="12" data-width="15" data-bbcode="true"> </dt> <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;"> <textarea name="contact_admin_info" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" data-bbcode="true">{CONTACT_US_INFO}</textarea> </dd> <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;"> <!-- IF S_BBCODE_ALLOWED --> <label><input type="checkbox" class="radio" name="disable_bbcode"<!-- IF S_BBCODE_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_BBCODE}</label> <!-- ENDIF --> <!-- IF S_SMILIES_ALLOWED --> <label><input type="checkbox" class="radio" name="disable_smilies"<!-- IF S_SMILIES_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_SMILIES}</label> <!-- ENDIF --> <!-- IF S_LINKS_ALLOWED --> <label><input type="checkbox" class="radio" name="disable_magic_url"<!-- IF S_MAGIC_URL_DISABLE_CHECKED --> checked="checked"<!-- ENDIF --> /> {L_DISABLE_MAGIC_URL}</label> <!-- ENDIF --> </dd> <dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{L_OPTIONS}{L_COLON} </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_database.html 0100666 0000000 0000000 00000005463 13715656641 0016075 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF MODE eq 'restore' --> <h1>{L_ACP_RESTORE}</h1> <p>{L_ACP_RESTORE_EXPLAIN}</p> <!-- IF .files --> <form id="acp_backup" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_RESTORE_OPTIONS}</legend> <dl> <dt><label for="file">{L_SELECT_FILE}{L_COLON}</label></dt> <dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_FIRST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd> </dl> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_START_RESTORE}" /> <input class="button2" type="submit" id="delete" name="delete" value="{L_DELETE_BACKUP}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSE --> <div class="errorbox"> <p>{L_ACP_NO_ITEMS}</p> </div> <!-- ENDIF --> <!-- ELSE --> <h1>{L_ACP_BACKUP}</h1> <p>{L_ACP_BACKUP_EXPLAIN}</p> <script> // <![CDATA[ function selector(bool) { var table = document.getElementById('table'); for (var i = 0; i < table.options.length; i++) { table.options[i].selected = bool; } } // ]]> </script> <form id="acp_backup" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_BACKUP_OPTIONS}</legend> <dl> <dt><label for="type">{L_BACKUP_TYPE}{L_COLON}</label></dt> <dd><label><input type="radio" class="radio" name="type" value="full" id="type" checked="checked" /> {L_FULL_BACKUP}</label> <label><input type="radio" name="type" class="radio" value="structure" /> {L_STRUCTURE_ONLY}</label> <label><input type="radio" class="radio" name="type" value="data" /> {L_DATA_ONLY}</label></dd> </dl> <dl> <dt><label for="method">{L_FILE_TYPE}{L_COLON}</label></dt> <dd><!-- BEGIN methods --> <label><input name="method"<!-- IF methods.S_FIRST_ROW --> id="method" checked="checked"<!-- ENDIF --> type="radio" class="radio" value="{methods.TYPE}" /> {methods.TYPE}</label> <!-- END methods --></dd> </dl> <dl> <dt><label for="table">{L_TABLE_SELECT}{L_COLON}</label></dt> <dd><select id="table" name="table[]" size="10" multiple="multiple"> <!-- BEGIN tables --> <option value="{tables.TABLE}">{tables.TABLE}</option> <!-- END tables --> </select></dd> <dd><a href="#" onclick="selector(true); return false;">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false); return false;">{L_DESELECT_ALL}</a></dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/acp_ext_list.html 0100666 0000000 0000000 00000011330 13715656641 0016152 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <h1>{L_EXTENSIONS_ADMIN}</h1> <p>{L_EXTENSIONS_EXPLAIN}</p> <fieldset class="quick"> <span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.3" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> • <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> • <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span> </fieldset> <form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none"> <fieldset> <legend>{L_EXTENSIONS_VERSION_CHECK_SETTINGS}</legend> <dl> <dt><label for="force_unstable">{L_FORCE_UNSTABLE}{L_COLON}</label></dt> <dd> <label><input type="radio" id="force_unstable" name="force_unstable" class="radio" value="1"<!-- IF FORCE_UNSTABLE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" name="force_unstable" class="radio" value="0"<!-- IF not FORCE_UNSTABLE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label> </dd> </dl> <p class="submit-buttons"> <input class="button1" type="submit" name="update" value="{L_SUBMIT}" /> <input class="button2" type="reset" name="reset" value="{L_RESET}" /> <input type="hidden" name="action" value="set_config_version_check_force_unstable" /> {S_FORM_TOKEN} </p> </fieldset> </form> <table class="table1"> <col class="row1" ><col class="row1" ><col class="row2" ><col class="row2" > <thead> <tr> <th>{L_EXTENSION_NAME}</th> <th style="text-align: center; width: 20%;">{L_CURRENT_VERSION}</th> <th style="text-align: center; width: 10%;">{L_EXTENSION_OPTIONS}</th> <th style="text-align: center; width: 25%;">{L_EXTENSION_ACTIONS}</th> </tr> </thead> <tbody> <!-- IF .enabled --> <tr> <td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td> </tr> <!-- BEGIN enabled --> <tr class="ext_enabled row-highlight"> <td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td> <td style="text-align: center;"> <!-- IF enabled.S_VERSIONCHECK --> <strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong> <!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF --> <!-- ELSE --> {enabled.META_VERSION} <!-- ENDIF --> </td> <td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td> <td style="text-align: center;"> <!-- BEGIN actions --> <a href="{enabled.actions.U_ACTION}"<!-- IF enabled.actions.L_ACTION_EXPLAIN --> title="{enabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{enabled.actions.L_ACTION}</a> <!-- IF not enabled.actions.S_LAST_ROW --> | <!-- ENDIF --> <!-- END actions --> </td> </tr> <!-- END enabled --> <!-- ENDIF --> <!-- IF .disabled --> <tr> <td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td> </tr> <!-- BEGIN disabled --> <tr class="ext_disabled row-highlight"> <td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td> <td style="text-align: center;"> <!-- IF disabled.S_VERSIONCHECK --> <strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong> <!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF --> <!-- ELSE --> {disabled.META_VERSION} <!-- ENDIF --> </td> <td style="text-align: center;"> <!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF --> </td> <td style="text-align: center;"> <!-- BEGIN actions --> <a href="{disabled.actions.U_ACTION}"<!-- IF disabled.actions.L_ACTION_EXPLAIN --> title="{disabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{disabled.actions.L_ACTION}</a> <!-- IF not disabled.actions.S_LAST_ROW --> | <!-- ENDIF --> <!-- END actions --> </td> </tr> <!-- END disabled --> <!-- ENDIF --> </tbody> </table> <table class="table1"> <tr> <th>{L_EXTENSION_INSTALL_HEADLINE}</th> </tr> <tr> <td class="row3">{L_EXTENSION_INSTALL_EXPLAIN}</td> </tr> <tr> <th>{L_EXTENSION_UPDATE_HEADLINE}</th> </tr> <tr> <td class="row3">{L_EXTENSION_UPDATE_EXPLAIN}</td> </tr> <tr> <th>{L_EXTENSION_REMOVE_HEADLINE}</th> </tr> <tr> <td class="row3">{L_EXTENSION_REMOVE_EXPLAIN}</td> </tr> </tbody> </table> <!-- INCLUDE overall_footer.html --> adm/style/acp_groups_position.html 0100666 0000000 0000000 00000016061 13715656641 0017570 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <h1>{L_MANAGE_LEGEND}</h1> <form id="legend_settings" method="post" action="{U_ACTION}"<!-- IF S_CAN_UPLOAD --> enctype="multipart/form-data"<!-- ENDIF -->> <fieldset> <legend>{L_LEGEND_SETTINGS}</legend> <dl> <dt><label for="legend_sort_groupname">{L_LEGEND_SORT_GROUPNAME}{L_COLON}</label><br /><span>{L_LEGEND_SORT_GROUPNAME_EXPLAIN}</span></dt> <dd> <label><input type="radio" name="legend_sort_groupname" class="radio" value="1"<!-- IF LEGEND_SORT_GROUPNAME --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" name="legend_sort_groupname" class="radio" value="0"<!-- IF not LEGEND_SORT_GROUPNAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label> </dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" name="update" value="{L_SUBMIT}" /> <input class="button2" type="reset" name="reset" value="{L_RESET}" /> <input type="hidden" name="action" value="set_config_legend" /> {S_FORM_TOKEN} </p> </fieldset> </form> <p>{L_LEGEND_EXPLAIN}</p> <table class="table1"> <col class="col1" /><col class="col2" /><col class="col2" /> <thead> <tr> <th style="width: 50%">{L_GROUP}</th> <th>{L_GROUP_TYPE}</th> <th>{L_ACTION}</th> </tr> </thead> <tbody> <!-- BEGIN legend --> <tr> <td><strong<!-- IF legend.GROUP_COLOUR --> style="color: {legend.GROUP_COLOUR}"<!-- ENDIF -->>{legend.GROUP_NAME}</strong></td> <td style="text-align: center;">{legend.GROUP_TYPE}</td> <td class="actions"> <span class="up-disabled" style="display: none;">{ICON_MOVE_UP_DISABLED}</span> <span class="up"><a href="{legend.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span> <span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span> <span class="down"><a href="{legend.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span> <a href="{legend.U_DELETE}">{ICON_DELETE}</a> </td> </tr> <!-- BEGINELSE --> <tr> <td colspan="3" class="row3">{L_NO_GROUPS_ADDED}</td> </tr> <!-- END legend --> </tbody> </table> <form id="legend_add_group" method="post" action="{U_ACTION_LEGEND}"> <fieldset class="quick"> <select name="g"> <option value="0">{L_SELECT_GROUP}</option> <!-- BEGIN add_legend --> <option<!-- IF add_legend.GROUP_SPECIAL --> class="sep"<!-- ENDIF --> value="{add_legend.GROUP_ID}">{add_legend.GROUP_NAME}</option> <!-- END add_legend --> </select> <!-- EVENT acp_groups_position_legend_add_button_before --> <input class="button2" type="submit" name="submit" value="{L_ADD}" /> <input type="hidden" name="action" value="add" /> <!-- EVENT acp_groups_position_legend_add_button_after --> {S_FORM_TOKEN} </fieldset> </form> <h1>{L_MANAGE_TEAMPAGE}</h1> <form id="teampage_settings" method="post" action="{U_ACTION}"<!-- IF S_CAN_UPLOAD --> enctype="multipart/form-data"<!-- ENDIF -->> <fieldset> <legend>{L_TEAMPAGE_SETTINGS}</legend> <dl> <dt><label for="teampage_memberships">{L_TEAMPAGE_MEMBERSHIPS}{L_COLON}</label></dt> <dd> <label><input type="radio" name="teampage_memberships" class="radio" value="0"<!-- IF DISPLAY_MEMBERSHIPS == 0 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_FIRST}</label><br /> <label><input type="radio" name="teampage_memberships" class="radio" value="1"<!-- IF DISPLAY_MEMBERSHIPS == 1 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_DEFAULT}</label><br /> <label><input type="radio" name="teampage_memberships" class="radio" value="2"<!-- IF DISPLAY_MEMBERSHIPS == 2 --> checked="checked"<!-- ENDIF --> /> {L_TEAMPAGE_DISP_ALL}</label> </dd> </dl> <dl> <dt><label for="teampage_forums">{L_TEAMPAGE_FORUMS}{L_COLON}</label><br /><span>{L_TEAMPAGE_FORUMS_EXPLAIN}</span></dt> <dd> <label><input type="radio" name="teampage_forums" class="radio" value="1"<!-- IF DISPLAY_FORUMS --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" name="teampage_forums" class="radio" value="0"<!-- IF not DISPLAY_FORUMS --> checked="checked"<!-- ENDIF --> /> {L_NO}</label> </dd> </dl> <p class="submit-buttons"> <input class="button1" type="submit" name="update" value="{L_SUBMIT}" /> <input class="button2" type="reset" name="reset" value="{L_RESET}" /> <input type="hidden" name="action" value="set_config_teampage" /> {S_FORM_TOKEN} </p> </fieldset> </form> <p>{L_TEAMPAGE_EXPLAIN}</p> <!-- IF S_TEAMPAGE_CATEGORY and CURRENT_CATEGORY_NAME --><p><strong><a href="{U_ACTION}">{L_TEAMPAGE}</a> » {CURRENT_CATEGORY_NAME}</strong></p><!-- ENDIF --> <table class="table1"> <col class="col1" /><col class="col2" /><col class="col2" /> <thead> <tr> <th style="width: 50%">{L_GROUP}</th> <th>{L_GROUP_TYPE}</th> <th>{L_ACTION}</th> </tr> </thead> <tbody> <!-- BEGIN teampage --> <tr> <td> <!-- IF teampage.U_CATEGORY --> <a href="{teampage.U_CATEGORY}">{teampage.GROUP_NAME}</a> <!-- ELSE --> <strong<!-- IF teampage.GROUP_COLOUR --> style="color: {teampage.GROUP_COLOUR}"<!-- ENDIF -->>{teampage.GROUP_NAME}</strong> <!-- ENDIF --> </td> <td style="text-align: center;"><!-- IF teampage.GROUP_TYPE -->{teampage.GROUP_TYPE}<!-- ELSE -->-<!-- ENDIF --> </td></td> <td class="actions"> <span class="up-disabled" style="display: none;">{ICON_MOVE_UP_DISABLED}</span> <span class="up"><a href="{teampage.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span> <span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span> <span class="down"><a href="{teampage.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span> <a href="{teampage.U_DELETE}">{ICON_DELETE}</a> </td> </tr> <!-- BEGINELSE --> <tr> <td colspan="3" class="row3">{L_NO_GROUPS_ADDED}</td> </tr> <!-- END teampage --> </tbody> </table> <!-- IF not S_TEAMPAGE_CATEGORY --> <form id="teampage_add_category" method="post" action="{U_ACTION_TEAMPAGE}"> <fieldset class="quick"> <input class="inputbox autowidth" type="text" maxlength="255" name="category_name" placeholder="{L_GROUP_CATEGORY_NAME}" /> <input class="button2" type="submit" name="submit" value="{L_ADD_GROUP_CATEGORY}" /> <input type="hidden" name="action" value="add_category" /> {S_FORM_TOKEN} </fieldset> </form> <!-- ENDIF --> <form id="teampage_add_group" method="post" action="{U_ACTION_TEAMPAGE}"> <fieldset class="quick"> <select name="g"> <option value="0">{L_SELECT_GROUP}</option> <!-- BEGIN add_teampage --> <option<!-- IF add_teampage.GROUP_SPECIAL --> class="sep"<!-- ENDIF --> value="{add_teampage.GROUP_ID}">{add_teampage.GROUP_NAME}</option> <!-- END add_teampage --> </select> <!-- EVENT acp_groups_position_teampage_add_button_before --> <input class="button2" type="submit" name="submit" value="{L_ADD}" /> <input type="hidden" name="action" value="add" /> <!-- EVENT acp_groups_position_teampage_add_button_after --> {S_FORM_TOKEN} </fieldset> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_help_phpbb.html 0100666 0000000 0000000 00000004467 13715656641 0016437 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <h1>{L_ACP_HELP_PHPBB}</h1> <form id="acp_help_phpbb" method="post" action="{U_ACTION}" data-ajax-action="{U_COLLECT_STATS}"> <div class="send-stats-row"> <!-- EVENT acp_help_phpbb_stats_before --> <div class="send-stats-tile"> <h2><i class="icon fa-bar-chart"></i>{L_SEND_STATISTICS}</h2> <p>{L_EXPLAIN_SEND_STATISTICS}</p> <div class="send-stats-row"> <div class="send-stats-data-row send-stats-data-only-row"> <a id="trigger-configlist" data-ajax="toggle_link" data-overlay="false" data-toggle-text="{L_HIDE_STATISTICS}"><span>{L_SHOW_STATISTICS}</span><i class="icon fa-angle-down"></i></a> </div> <div class="send-stats-data-row"> <div class="configlist" id="configlist"> <!-- BEGIN providers --> <fieldset> <legend>{providers.NAME}</legend> <!-- BEGIN values --> <dl> <dt>{providers.values.KEY}</dt> <dd>{providers.values.VALUE}</dd> </dl> <!-- END values --> </fieldset> <!-- END providers --> </div> </div> </div> <dl class="send-stats-settings"> <dt> <input name="help_send_statistics" id="help_send_statistics" type="checkbox"<!-- IF S_COLLECT_STATS --> checked="checked"<!-- ENDIF --> /> <label for="help_send_statistics"></label> </dt> <dd>{L_SEND_STATISTICS_LONG}</dd> </dl> </div> <script> var statsData = {{ S_STATS_DATA }}; </script> <!-- EVENT acp_help_phpbb_stats_after --> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" /> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> </p> {S_FORM_TOKEN} </fieldset> </div> </form> <form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form"> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> {% for providers in providers %} {% for values in providers.values %} <input type="hidden" name="{{ providers.NAME }}[{{ values.KEY }}]" value="{{ values.VALUE }}" /> {% endfor %} {% endfor %} <input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" /> </p> </fieldset> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_jabber.html 0100666 0000000 0000000 00000010372 13715656641 0015551 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <h1>{L_ACP_JABBER_SETTINGS}</h1> <p>{L_ACP_JABBER_SETTINGS_EXPLAIN}</p> <!-- IF S_WARNING --> <div class="errorbox"> <h3>{L_WARNING}</h3> <p>{WARNING_MSG}</p> </div> <!-- ENDIF --> <form id="acp_jabber" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_ACP_JABBER_SETTINGS}</legend> <!-- IF S_GTALK_NOTE --> <p>{L_JAB_GTALK_NOTE}</p> <!-- ENDIF --> <dl> <dt><label for="jab_enable">{L_JAB_ENABLE}{L_COLON}</label><br /><span>{L_JAB_ENABLE_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="jab_enable" name="jab_enable" value="1"<!-- IF JAB_ENABLE --> checked="checked"<!-- ENDIF --> /> {L_ENABLED}</label> <label><input type="radio" class="radio" name="jab_enable" value="0"<!-- IF not JAB_ENABLE --> checked="checked"<!-- ENDIF --> /> {L_DISABLED}</label></dd> </dl> <dl> <dt><label for="jab_host">{L_JAB_SERVER}{L_COLON}</label><br /><span>{L_JAB_SERVER_EXPLAIN}</span></dt> <dd><input type="text" id="jab_host" name="jab_host" value="{JAB_HOST}" /></dd> </dl> <dl> <dt><label for="jab_port">{L_JAB_PORT}{L_COLON}</label><br /><span>{L_JAB_PORT_EXPLAIN}</span></dt> <dd><input type="number" id="jab_port" name="jab_port" value="{JAB_PORT}" min="0" max="99999" /></dd> </dl> <dl> <dt><label for="jab_username">{L_JAB_USERNAME}{L_COLON}</label><br /><span>{L_JAB_USERNAME_EXPLAIN}</span></dt> <dd><input type="text" id="jab_username" name="jab_username" value="{JAB_USERNAME}" /></dd> </dl> <dl> <dt><label for="jab_password">{L_JAB_PASSWORD}{L_COLON}</label><br /><span>{L_JAB_PASSWORD_EXPLAIN}</span></dt> <dd><input type="password" id="jab_password" name="jab_password" value="{JAB_PASSWORD}" autocomplete="off" /></dd> </dl> <!-- IF S_CAN_USE_SSL --> <dl> <dt><label for="jab_use_ssl">{L_JAB_USE_SSL}{L_COLON}</label><br /><span>{L_JAB_USE_SSL_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="jab_use_ssl" name="jab_use_ssl" value="1"<!-- IF JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="jab_use_ssl" value="0"<!-- IF not JAB_USE_SSL --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <dl> <dt><label for="jab_verify_peer">{L_JAB_VERIFY_PEER}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="jab_verify_peer" name="jab_verify_peer" value="1"<!-- IF JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="jab_verify_peer" value="0"<!-- IF not JAB_VERIFY_PEER --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <dl> <dt><label for="jab_verify_peer_name">{L_JAB_VERIFY_PEER_NAME}{L_COLON}</label><br /><span>{L_JAB_VERIFY_PEER_NAME_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="jab_verify_peer_name" name="jab_verify_peer_name" value="1"<!-- IF JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="jab_verify_peer_name" value="0"<!-- IF not JAB_VERIFY_PEER_NAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <dl> <dt><label for="jab_allow_self_signed">{L_JAB_ALLOW_SELF_SIGNED}{L_COLON}</label><br /><span>{L_JAB_ALLOW_SELF_SIGNED_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="jab_allow_self_signed" name="jab_allow_self_signed" value="1"<!-- IF JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="jab_allow_self_signed" value="0"<!-- IF not JAB_ALLOW_SELF_SIGNED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <!-- ENDIF --> <dl> <dt><label for="jab_package_size">{L_JAB_PACKAGE_SIZE}{L_COLON}</label><br /><span>{L_JAB_PACKAGE_SIZE_EXPLAIN}</span></dt> <dd><input type="number" id="jab_package_size" name="jab_package_size" value="{JAB_PACKAGE_SIZE}" min="0" max="99999" /></dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_permissions.html 0100666 0000000 0000000 00000025640 13715656641 0016703 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF S_INTRO --> <h1>{L_ACP_PERMISSIONS}</h1> {L_ACP_PERMISSIONS_EXPLAIN} <!-- ENDIF --> <!-- IF S_SELECT_VICTIM --> <!-- IF U_BACK --><a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a><!-- ENDIF --> <h1>{L_TITLE}</h1> <p>{L_EXPLAIN}</p> <!-- IF S_FORUM_NAMES --> <p><strong>{L_FORUMS}{L_COLON}</strong> {FORUM_NAMES}</p> <!-- ENDIF --> <!-- IF S_SELECT_FORUM --> <form id="select_victim" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_FORUM}</legend> <!-- IF S_FORUM_MULTIPLE --><p>{L_LOOK_UP_FORUMS_EXPLAIN}</p><!-- ENDIF --> <dl> <dt><!-- EVENT acp_permissions_select_multiple_forum_prepend --><label for="forum">{L_LOOK_UP_FORUM}{L_COLON}</label><!-- EVENT acp_permissions_select_multiple_forum_append --></dt> <dd><select id="forum" name="forum_id[]"<!-- IF S_FORUM_MULTIPLE --> multiple="multiple"<!-- ENDIF --> size="10">{S_FORUM_OPTIONS}</select></dd> <!-- IF S_FORUM_ALL --><dd><label><input type="checkbox" class="radio" name="all_forums" value="1" /> {L_ALL_FORUMS}</label></dd><!-- ENDIF --> </dl> <p class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" /> </p> </fieldset> </form> <!-- IF S_FORUM_MULTIPLE --> <form id="select_subforum" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_FORUM}</legend> <p>{L_SELECT_FORUM_SUBFORUM_EXPLAIN}</p> <dl> <dt><!-- EVENT acp_permissions_select_forum_prepend --><label for="sforum">{L_LOOK_UP_FORUM}{L_COLON}</label><!-- EVENT acp_permissions_select_forum_append --></dt> <dd><select id="sforum" name="subforum_id">{S_SUBFORUM_OPTIONS}</select></dd> </dl> <p class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" /> </p> </fieldset> </form> <!-- ENDIF --> <!-- ELSEIF S_SELECT_USER and S_CAN_SELECT_USER --> <form id="select_victim" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_USER}</legend> <dl> <dt><label for="username">{L_FIND_USERNAME}{L_COLON}</label></dt> <dd><input class="text medium" type="text" id="username" name="username[]" /></dd> <dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd> <dd class="full" style="text-align: left;"><label><input type="checkbox" class="radio" id="anonymous" name="user_id[]" value="{ANONYMOUS_USER_ID}" /> {L_SELECT_ANONYMOUS}</label></dd> </dl> <p class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" /> </p> </fieldset> </form> <!-- ELSEIF S_SELECT_GROUP and S_CAN_SELECT_GROUP --> <form id="select_victim" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_GROUP}</legend> <dl> <dt><!-- EVENT acp_permissions_select_group_prepend --><label for="group">{L_LOOK_UP_GROUP}{L_COLON}</label><!-- EVENT acp_permissions_select_group_append --></dt> <dd><select name="group_id[]" id="group">{S_GROUP_OPTIONS}</select></dd> </dl> <p class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_SUBMIT}" class="button1" /> </p> </fieldset> </form> <!-- ELSEIF S_SELECT_USERGROUP --> <div class="column1"> <!-- IF S_CAN_SELECT_USER --> <h1>{L_USERS}</h1> <form id="users" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_MANAGE_USERS}</legend> <dl> <dd class="full"><select style="width: 100%;" name="user_id[]" multiple="multiple" size="5">{S_DEFINED_USER_OPTIONS}</select></dd> <!-- IF S_ALLOW_ALL_SELECT --><dd class="full" style="text-align: right;"><label><input type="checkbox" class="radio" name="all_users" value="1" /> {L_ALL_USERS}</label></dd><!-- ENDIF --> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" class="button2" name="action[delete]" value="{L_REMOVE_PERMISSIONS}" style="width: 46% !important;" /> <input class="button1" type="submit" name="submit_edit_options" value="{L_EDIT_PERMISSIONS}" style="width: 46% !important;" /> </fieldset> </form> <form id="add_user" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_ADD_USERS}</legend> <p>{L_USERNAMES_EXPLAIN}</p> <dl> <dd class="full"><textarea id="username" name="usernames" rows="5" cols="5" style="width: 100%; height: 60px;"></textarea></dd> <dd class="full" style="text-align: left;"><!-- EVENT acp_permissions_find_username_prepend --><div style="float: {S_CONTENT_FLOW_END};">[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</div><!-- EVENT acp_permissions_find_username_append --><label><input type="checkbox" class="radio" id="anonymous" name="user_id[]" value="{ANONYMOUS_USER_ID}" /> {L_SELECT_ANONYMOUS}</label></dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button1" type="submit" name="submit_add_options" value="{L_ADD_PERMISSIONS}" /> </fieldset> </form> <!-- ENDIF --> </div> <div class="column2"> <!-- IF S_CAN_SELECT_GROUP --> <h1>{L_USERGROUPS}</h1> <form id="groups" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_MANAGE_GROUPS}</legend> <dl> <dd class="full"><select style="width: 100%;" name="group_id[]" multiple="multiple" size="5">{S_DEFINED_GROUP_OPTIONS}</select></dd> <!-- IF S_ALLOW_ALL_SELECT --><dd class="full" style="text-align: right;"><label><input type="checkbox" class="radio" name="all_groups" value="1" /> {L_ALL_GROUPS}</label></dd><!-- ENDIF --> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button2" type="submit" name="action[delete]" value="{L_REMOVE_PERMISSIONS}" style="width: 46% !important;" /> <input class="button1" type="submit" name="submit_edit_options" value="{L_EDIT_PERMISSIONS}" style="width: 46% !important;" /> </fieldset> </form> <form id="add_groups" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_ADD_GROUPS}</legend> <dl> <dd class="full"><!-- EVENT acp_permissions_add_group_options_prepend --><select name="group_id[]" style="width: 100%; height: 107px;" multiple="multiple">{S_ADD_GROUP_OPTIONS}</select><!-- EVENT acp_permissions_add_group_options_append --></dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" class="button1" name="submit_add_options" value="{L_ADD_PERMISSIONS}" /> </fieldset> </form> <!-- ENDIF --> </div> <!-- ELSEIF S_SELECT_USERGROUP_VIEW --> <div class="column1"> <h1>{L_USERS}</h1> <form id="users" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_MANAGE_USERS}</legend> <dl> <dd class="full"><select style="width: 100%;" name="user_id[]" multiple="multiple" size="5">{S_DEFINED_USER_OPTIONS}</select></dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button1" type="submit" name="submit" value="{L_VIEW_PERMISSIONS}" /> </fieldset> </form> <form id="add_user" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_USER}</legend> <dl> <dt><label for="username">{L_FIND_USERNAME}{L_COLON}</label></dt> <dd><input type="text" id="username" name="username[]" /></dd> <dd>[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]</dd> <dd class="full" style="text-align: left;"><label><input type="checkbox" class="radio" id="anonymous" name="user_id[]" value="{ANONYMOUS_USER_ID}" /> {L_SELECT_ANONYMOUS}</label></dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_VIEW_PERMISSIONS}" class="button1" /> </fieldset> </form> </div> <div class="column2"> <h1>{L_USERGROUPS}</h1> <form id="groups" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_MANAGE_GROUPS}</legend> <dl> <dd class="full"><select style="width: 100%;" name="group_id[]" multiple="multiple" size="5">{S_DEFINED_GROUP_OPTIONS}</select></dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button1" type="submit" name="submit" value="{L_VIEW_PERMISSIONS}" /> </fieldset> </form> <form id="group" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_LOOK_UP_GROUP}</legend> <dl> <dt><label for="group_select">{L_LOOK_UP_GROUP}{L_COLON}</label></dt> <!-- EVENT acp_permissions_select_group_before --> <dd><select name="group_id[]" id="group_select">{S_ADD_GROUP_OPTIONS}</select></dd> <!-- EVENT acp_permissions_select_group_after --> <dd> </dd> </dl> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input type="submit" name="submit" value="{L_VIEW_PERMISSIONS}" class="button1" /> </fieldset> </form> </div> <!-- ENDIF --> <!-- ENDIF --> <!-- IF S_VIEWING_PERMISSIONS --> <h1>{L_ACL_VIEW}</h1> <p>{L_ACL_VIEW_EXPLAIN}</p> <fieldset class="quick"> <strong>» {L_PERMISSION_TYPE}</strong> </fieldset> <!-- INCLUDE permission_mask.html --> <!-- ENDIF --> <!-- IF S_SETTING_PERMISSIONS --> <h1>{L_ACL_SET}</h1> <p>{L_ACL_SET_EXPLAIN}</p> <br /> <fieldset class="quick" style="float: {S_CONTENT_FLOW_END};"> <strong>» {L_PERMISSION_TYPE}</strong> </fieldset> <!-- IF S_PERMISSION_DROPDOWN --> <form id="pselect" method="post" action="{U_ACTION}"> <fieldset class="quick" style="float: {S_CONTENT_FLOW_BEGIN};"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} {L_SELECT_TYPE}{L_COLON} <select name="type">{S_PERMISSION_DROPDOWN}</select> <input class="button2" type="submit" name="submit" value="{L_GO}" /> </fieldset> </form> <!-- ENDIF --> <br class="responsive-hide" /><br class="responsive-hide" /> <!-- include tooltip file --> <!-- INCLUDEJS tooltip.js --> <form id="set-permissions" method="post" action="{U_ACTION}" data-role-description="{L_ROLE_DESCRIPTION}"> {S_HIDDEN_FIELDS} <!-- INCLUDE permission_mask.html --> <br class="responsive-hide" /><br class="responsive-hide" /> <fieldset class="quick" style="float: {S_CONTENT_FLOW_END};"> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" /> <input class="button2" type="button" id="reset" name="cancel" value="{L_RESET}" onclick="document.forms['set-permissions'].reset(); init_colours(active_pmask + active_fmask);" /> {S_FORM_TOKEN} </p> </fieldset> <br class="responsive-hide" /><br class="responsive-hide" /> </form> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/acp_posting_buttons.html 0100666 0000000 0000000 00000006573 13715656641 0017575 ustar 00Unknown Unknown <script> // <![CDATA[ // Define the bbCode tags var bbcode = new Array(); var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->); // ]]> </script> <!-- INCLUDEJS {T_ASSETS_PATH}/javascript/editor.js --> <!-- EVENT acp_posting_buttons_before --> <div id="format-buttons"> <input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}" /> <input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" /> <input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}" /> <!-- IF S_BBCODE_QUOTE --> <input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}" /> <!-- ENDIF --> <input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" /> <input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" /> <input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" /> <input type="button" class="button2" accesskey="y" name="addlistitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}" /> <!-- IF S_BBCODE_IMG --> <input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}" /> <!-- ENDIF --> <!-- IF S_LINKS_ALLOWED --> <input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}" /> <!-- ENDIF --> <!-- IF S_BBCODE_FLASH --> <input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}" /> <!-- ENDIF --> <select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{L_BBCODE_F_HELP}"> <option value="50">{L_FONT_TINY}</option> <option value="85">{L_FONT_SMALL}</option> <option value="100" selected="selected">{L_FONT_NORMAL}</option> <!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 --> <option value="150">{L_FONT_LARGE}</option> <!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 --> <option value="200">{L_FONT_HUGE}</option> <!-- ENDIF --> <!-- ENDIF --> </select> <!-- EVENT acp_posting_buttons_custom_tags_before --> <!-- BEGIN custom_tags --> <input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{{ custom_tags.BBCODE_HELPLINE }}" /> <!-- END custom_tags --> </div> <!-- EVENT acp_posting_buttons_after --> adm/style/acp_profile.html 0100666 0000000 0000000 00000024633 13715656641 0015771 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF S_EDIT --> <a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a> <h1>{L_TITLE}</h1> <p>{L_EXPLAIN}</p> <!-- IF ERROR_MSG --> <div class="errorbox"> <h3>{L_WARNING}</h3> <p>{ERROR_MSG}</p> </div> <!-- ENDIF --> <form id="add_profile_field" method="post" action="{U_ACTION}"{S_FORM_ENCTYPE}> <!-- IF S_STEP_ONE --> {% EVENT acp_profile_options_before %} <fieldset> <legend>{L_TITLE}</legend> {% EVENT acp_profile_basic_options_before %} <dl> <dt><label>{L_FIELD_TYPE}{L_COLON}</label><br /><span>{L_FIELD_TYPE_EXPLAIN}</span></dt> <dd><strong>{FIELD_TYPE}</strong></dd> </dl> <!-- IF S_EDIT_MODE --> <dl> <dt><label>{L_FIELD_IDENT}{L_COLON}</label><br /><span>{L_FIELD_IDENT_EXPLAIN}</span></dt> <dd><input type="hidden" name="field_ident" value="{FIELD_IDENT}" /><strong>{FIELD_IDENT}</strong></dd> </dl> <!-- ELSE --> <dl> <dt><label for="field_ident">{L_FIELD_IDENT}{L_COLON}</label><br /><span>{L_FIELD_IDENT_EXPLAIN}</span></dt> <dd><input class="text medium" type="text" id="field_ident" name="field_ident" value="{FIELD_IDENT}" /></dd> </dl> <!-- ENDIF --> <dl> <dt><label for="field_no_view">{L_DISPLAY_PROFILE_FIELD}{L_COLON}</label><br /><span>{L_DISPLAY_PROFILE_FIELD_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="field_no_view" name="field_no_view" value="0"<!-- IF not S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="field_no_view" value="1"<!-- IF S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> {% EVENT acp_profile_basic_options_after %} </fieldset> {% EVENT acp_profile_visibility_options_before %} <fieldset> <legend>{L_VISIBILITY_OPTION}</legend> <dl> <dt><label for="field_show_profile">{L_DISPLAY_AT_PROFILE}{L_COLON}</label><br /><span>{L_DISPLAY_AT_PROFILE_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_profile" name="field_show_profile" value="1"<!-- IF S_SHOW_PROFILE --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_show_on_reg">{L_DISPLAY_AT_REGISTER}{L_COLON}</label><br /><span>{L_DISPLAY_AT_REGISTER_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_on_reg" name="field_show_on_reg" value="1"<!-- IF S_SHOW_ON_REG --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_show_on_pm">{L_DISPLAY_ON_PM}{L_COLON}</label><br /><span>{L_DISPLAY_ON_PM_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_on_pm" name="field_show_on_pm" value="1"<!-- IF S_SHOW_ON_PM --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_show_on_vt">{L_DISPLAY_ON_VT}{L_COLON}</label><br /><span>{L_DISPLAY_ON_VT_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_on_vt" name="field_show_on_vt" value="1"<!-- IF S_SHOW_ON_VT --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_show_on_ml">{L_DISPLAY_ON_MEMBERLIST}{L_COLON}</label><br /><span>{L_DISPLAY_ON_MEMBERLIST_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_on_ml" name="field_show_on_ml" value="1"<!-- IF S_SHOW_ON_MEMBERLIST --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_required">{L_REQUIRED_FIELD}{L_COLON}</label><br /><span>{L_REQUIRED_FIELD_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_required" name="field_required" value="1"<!-- IF S_FIELD_REQUIRED --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_show_novalue">{L_SHOW_NOVALUE_FIELD}{L_COLON}</label><br /><span>{L_SHOW_NOVALUE_FIELD_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_show_novalue" name="field_show_novalue" value="1"<!-- IF S_FIELD_SHOW_NOVALUE --> checked="checked"<!-- ENDIF --> /></dd> </dl> <dl> <dt><label for="field_hide">{L_HIDE_PROFILE_FIELD}{L_COLON}</label><br /><span>{L_HIDE_PROFILE_FIELD_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_hide" name="field_hide" value="1"<!-- IF S_FIELD_HIDE --> checked="checked"<!-- ENDIF --> /></dd> </dl> <!-- EVENT acp_profile_contact_before --> <dl> <dt><label for="field_is_contact">{L_FIELD_IS_CONTACT}{L_COLON}</label><br /><span>{L_FIELD_IS_CONTACT_EXPLAIN}</span></dt> <dd><input type="checkbox" class="radio" id="field_is_contact" name="field_is_contact" value="1"<!-- IF S_FIELD_CONTACT --> checked="checked"<!-- ENDIF --> /></dd> <dd><input class="text medium" type="text" name="field_contact_desc" id="field_contact_desc" value="{FIELD_CONTACT_DESC}" /> <label for="field_contact_desc">{L_FIELD_CONTACT_DESC}</label></dd> <dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd> <!-- EVENT acp_profile_contact_last --> </dl> {% EVENT acp_profile_contact_after %} </fieldset> {% EVENT acp_profile_visibility_options_after %} <!-- IF S_EDIT_MODE --> <fieldset class="quick"> <input class="button1" type="submit" name="save" value="{L_SAVE}" /> </fieldset> <!-- ENDIF --> <fieldset> <legend>{L_LANG_SPECIFIC}</legend> <dl> <dt><label for="lang_name">{L_USER_FIELD_NAME}{L_COLON}</label></dt> <dd><input class="text medium" type="text" id="lang_name" name="lang_name" value="{LANG_NAME}" /></dd> </dl> <dl> <dt><label for="lang_explain">{L_FIELD_DESCRIPTION}{L_COLON}</label><br /><span>{L_FIELD_DESCRIPTION_EXPLAIN}</span></dt> <dd><textarea id="lang_explain" name="lang_explain" rows="3" cols="80">{LANG_EXPLAIN}</textarea></dd> </dl> <!-- IF S_TEXT or S_STRING --> <dl> <dt><label for="lang_default_value">{L_DEFAULT_VALUE}{L_COLON}</label><br /><span>{L_DEFAULT_VALUE_EXPLAIN}</span></dt> <dd><!-- IF S_STRING --><input class="text medium" type="text" id="lang_default_value" name="lang_default_value" value="{LANG_DEFAULT_VALUE}" /><!-- ELSE --><textarea id="lang_default_value" name="lang_default_value" rows="5" cols="80">{LANG_DEFAULT_VALUE}</textarea><!-- ENDIF --></dd> </dl> <!-- ENDIF --> <!-- IF S_BOOL or S_DROPDOWN --> <dl> <dt><label for="lang_options">{L_ENTRIES}{L_COLON}</label> <!-- IF S_EDIT_MODE and S_DROPDOWN --> <br /><span>{L_EDIT_DROPDOWN_LANG_EXPLAIN}</span> <!-- ELSE --> <br /><span>{L_LANG_OPTIONS_EXPLAIN}</span> <!-- ENDIF --> </dt> <!-- IF S_DROPDOWN --> <dd><textarea id="lang_options" name="lang_options" rows="5" cols="80">{LANG_OPTIONS}</textarea></dd> <!-- ELSE --> <dd><input class="medium" id="lang_options" name="lang_options[0]" value="{FIRST_LANG_OPTION}" /> {L_FIRST_OPTION}</dd> <dd><input class="medium" name="lang_options[1]" value="{SECOND_LANG_OPTION}" /> {L_SECOND_OPTION}</dd> <!-- ENDIF --> </dl> <!-- ENDIF --> <!-- EVENT acp_profile_step_one_lang_after --> </fieldset> <fieldset class="quick"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button1" type="submit" name="next" value="{L_PROFILE_TYPE_OPTIONS}" /> </fieldset> <!-- ELSEIF S_STEP_TWO --> <fieldset> <legend>{L_TITLE}</legend> <!-- BEGIN option --> <dl> <dt><label>{option.TITLE}{L_COLON}</label><!-- IF option.EXPLAIN --><br /><span>{option.EXPLAIN}</span><!-- ENDIF --></dt> <dd>{option.FIELD}</dd> </dl> <!-- END option --> </fieldset> <fieldset class="quick" style="float: {S_CONTENT_FLOW_BEGIN};"> <input class="button1" type="submit" name="prev" value="{L_PROFILE_BASIC_OPTIONS}" /> </fieldset> <fieldset class="quick" style="float: {S_CONTENT_FLOW_END};"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <input class="button1" type="submit" name="next" value="{L_NEXT_STEP}" /> </fieldset> <!-- ELSEIF S_STEP_THREE --> <!-- BEGIN options --> <fieldset> <legend>{options.LANGUAGE}</legend> <!-- BEGIN field --> <dl> <dt><label>{options.field.L_TITLE}{L_COLON}</label><!-- IF options.field.L_EXPLAIN --><br /><span>{options.field.L_EXPLAIN}</span><!-- ENDIF --></dt> {options.field.FIELD} </dl> <!-- END field --> </fieldset> <!-- END options --> <fieldset class="quick" style="float: {S_CONTENT_FLOW_BEGIN};"> <input class="button1" type="submit" name="prev" value="{L_PROFILE_TYPE_OPTIONS}" /> </fieldset> <fieldset class="quick" style="float: {S_CONTENT_FLOW_END};"> {S_HIDDEN_FIELDS} <input class="button1" type="submit" name="save" value="{L_SAVE}" /> {S_FORM_TOKEN} </fieldset> <!-- ENDIF --> </form> <!-- ELSE --> <h1>{L_ACP_CUSTOM_PROFILE_FIELDS}</h1> <!-- IF S_NEED_EDIT --> <div class="errorbox"> <h3>{L_WARNING}</h3> <p>{L_CUSTOM_FIELDS_NOT_TRANSLATED}</p> </div> <!-- ENDIF --> <table class="table1 zebra-table"> <thead> <tr> <th>{L_FIELD_IDENT}</th> <th>{L_FIELD_TYPE}</th> <th colspan="2">{L_OPTIONS}</th> </tr> </thead> <tbody> <!-- BEGIN fields --> <tr> <td>{fields.FIELD_IDENT}</td> <td>{fields.FIELD_TYPE}</td> <td style="text-align: center;"><a href="{fields.U_ACTIVATE_DEACTIVATE}" data-ajax="activate_deactivate">{fields.L_ACTIVATE_DEACTIVATE}</a><!-- IF fields.S_NEED_EDIT --> | <a href="{fields.U_TRANSLATE}" style="color: red;">{L_TRANSLATE}</a><!-- ENDIF --></td> <td class="actions" style="width: 80px;"> <span class="up-disabled" style="display:none;">{ICON_MOVE_UP_DISABLED}</span> <span class="up"><a href="{fields.U_MOVE_UP}" data-ajax="row_up">{ICON_MOVE_UP}</a></span> <span class="down-disabled" style="display:none;">{ICON_MOVE_DOWN_DISABLED}</span> <span class="down"><a href="{fields.U_MOVE_DOWN}" data-ajax="row_down">{ICON_MOVE_DOWN}</a></span> <!-- IF not fields.S_NEED_EDIT --> <a href="{fields.U_EDIT}">{ICON_EDIT}</a> <!-- ELSE --> {ICON_EDIT_DISABLED} <!-- ENDIF --> <a href="{fields.U_DELETE}" data-ajax="row_delete">{ICON_DELETE}</a> </td> </tr> <!-- BEGINELSE --> <tr class="row3"> <td colspan="4">{L_ACP_NO_ITEMS}</td> </tr> <!-- END fields --> </tbody> </table> <form id="profile_fields" method="post" action="{U_ACTION}"> <fieldset class="quick"> <select name="field_type">{S_TYPE_OPTIONS}</select> <input class="button1" type="submit" name="submit" value="{L_CREATE_NEW_FIELD}" /> <input type="hidden" name="create" value="1" /> {S_FORM_TOKEN} </fieldset> </form> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/acp_prune_users.html 0100666 0000000 0000000 00000006370 13715656641 0016701 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <h1>{L_ACP_PRUNE_USERS}</h1> <p>{L_ACP_PRUNE_USERS_EXPLAIN}</p> <form id="acp_prune" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_CRITERIA}</legend> <dl> <dt><label for="username">{L_USERNAME}{L_COLON}</label></dt> <dd><input type="text" id="username" name="username" /></dd> </dl> <dl> <dt><label for="email">{L_EMAIL}{L_COLON}</label></dt> <dd><input type="text" id="email" name="email" /></dd> </dl> <dl> <dt><label for="joined_after">{L_JOINED}{L_COLON}</label><br /><span>{L_JOINED_EXPLAIN}</span></dt> <dd> <strong>{L_AFTER}</strong> <input type="text" id="joined_after" name="joined_after" /> <br /> <br /> <strong>{L_BEFORE}</strong> <input type="text" id="joined_before" name="joined_before" /> </dd> </dl> <dl> <dt><label for="active">{L_LAST_ACTIVE}{L_COLON}</label><br /><span>{L_LAST_ACTIVE_EXPLAIN}</span></dt> <dd><select name="active_select">{S_ACTIVE_OPTIONS}</select> <input type="text" id="active" name="active" /></dd> </dl> <dl> <dt><label for="count">{L_POSTS}{L_COLON}</label></dt> <dd><select name="count_select">{S_COUNT_OPTIONS}</select> <input type="number" id="count" name="count" /></dd> </dl> <dl> <dt><label for="posts_on_queue">{L_POSTS_ON_QUEUE}{L_COLON}</label></dt> <dd><select name="queue_select">{S_COUNT_OPTIONS}</select> <input type="number" id="posts_on_queue" name="posts_on_queue" /></dd> </dl> <!-- IF S_GROUP_LIST --> <dl> <dt><label for="group_id">{L_GROUP}{L_COLON}</label><br /><span>{L_PRUNE_USERS_GROUP_EXPLAIN}</span></dt> <dd><select id="group_id" name="group_id">{S_GROUP_LIST}</select></dd> </dl> <!-- ENDIF --> </fieldset> <fieldset> <legend>{L_USERNAMES}</legend> <dl> <dt><label for="users">{L_ACP_PRUNE_USERS}{L_COLON}</label><br /><span>{L_SELECT_USERS_EXPLAIN}</span></dt> <dd><textarea id="users" name="users" cols="40" rows="5"></textarea></dd> <dd><!-- EVENT acp_prune_users_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_prune_users_find_username_append --></dd> </dl> </fieldset> <fieldset> <legend>{L_OPTIONS}</legend> <dl> <dt><label for="deleteposts">{L_DELETE_USER_POSTS}{L_COLON}</label><br /><span>{L_DELETE_USER_POSTS_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" name="deleteposts" value="1" /> {L_YES}</label> <label><input type="radio" class="radio" id="deleteposts" name="deleteposts" value="0" checked="checked" /> {L_NO}</label></dd> </dl> <dl> <dt><label for="deactivate">{L_DEACTIVATE_DELETE}{L_COLON}</label><br /><span>{L_DEACTIVATE_DELETE_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" name="action" value="delete" /> {L_DELETE_USERS}</label> <label><input type="radio" class="radio" id="deactivate" name="action" value="deactivate" checked="checked" /> {L_DEACTIVATE}</label></dd> </dl> </fieldset> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input type="hidden" name="prune" value="1" /> <input class="button1" type="submit" id="update" name="update" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> {S_FORM_TOKEN} </p> </fieldset> </form> <!-- INCLUDE overall_footer.html --> adm/style/acp_search.html 0100666 0000000 0000000 00000014067 13715656641 0015576 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF S_SETTINGS --> <h1>{L_ACP_SEARCH_SETTINGS}</h1> <p>{L_ACP_SEARCH_SETTINGS_EXPLAIN}</p> <form id="acp_search" method="post" action="{U_ACTION}"> <fieldset> <legend>{L_GENERAL_SEARCH_SETTINGS}</legend> <dl> <dt><label for="load_search">{L_YES_SEARCH}{L_COLON}</label><br /><span>{L_YES_SEARCH_EXPLAIN}</span></dt> <dd><label><input type="radio" class="radio" id="load_search" name="config[load_search]" value="1"<!-- IF S_YES_SEARCH --> checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="config[load_search]" value="0"<!-- IF not S_YES_SEARCH --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <dl> <dt><label for="search_interval">{L_SEARCH_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_INTERVAL_EXPLAIN}</span></dt> <dd><input id="search_interval" type="number" min="0" max="9999" name="config[search_interval]" value="{SEARCH_INTERVAL}" /> {L_SECONDS}</dd> </dl> <dl> <dt><label for="search_anonymous_interval">{L_SEARCH_GUEST_INTERVAL}{L_COLON}</label><br /><span>{L_SEARCH_GUEST_INTERVAL_EXPLAIN}</span></dt> <dd><input id="search_anonymous_interval" type="number" min="0" max="9999" name="config[search_anonymous_interval]" value="{SEARCH_GUEST_INTERVAL}" /> {L_SECONDS}</dd> </dl> <dl> <dt><label for="limit_search_load">{L_LIMIT_SEARCH_LOAD}{L_COLON}</label><br /><span>{L_LIMIT_SEARCH_LOAD_EXPLAIN}</span></dt> <dd><input id="limit_search_load" type="text" size="4" maxlength="4" name="config[limit_search_load]" value="{LIMIT_SEARCH_LOAD}" /></dd> </dl> <dl> <dt><label for="min_search_author_chars">{L_MIN_SEARCH_AUTHOR_CHARS}{L_COLON}</label><br /><span>{L_MIN_SEARCH_AUTHOR_CHARS_EXPLAIN}</span></dt> <dd><input id="min_search_author_chars" type="number" min="0" max="9999" name="config[min_search_author_chars]" value="{MIN_SEARCH_AUTHOR_CHARS}" /></dd> </dl> <dl> <dt><label for="max_num_search_keywords">{L_MAX_NUM_SEARCH_KEYWORDS}{L_COLON}</label><br /><span>{L_MAX_NUM_SEARCH_KEYWORDS_EXPLAIN}</span></dt> <dd><input id="max_num_search_keywords" type="number" min="0" max="9999" name="config[max_num_search_keywords]" value="{MAX_NUM_SEARCH_KEYWORDS}" /></dd> </dl> <dl> <dt> <label for="default_search_return_chars">{{ lang('DEFAULT_SEARCH_RETURN_CHARS') ~ lang('COLON') }}</label> <br><span>{{ lang('DEFAULT_SEARCH_RETURN_CHARS_EXPLAIN') }}</span> </dt> <dd><input id="default_search_return_chars" name="config[default_search_return_chars]" type="number" value="{{ DEFAULT_SEARCH_RETURN_CHARS }}" min="0" max="9999"></dd> </dl> <dl> <dt><label for="search_store_results">{L_SEARCH_STORE_RESULTS}{L_COLON}</label><br /><span>{L_SEARCH_STORE_RESULTS_EXPLAIN}</span></dt> <dd><input id="search_store_results" type="number" min="0" max="999999" name="config[search_store_results]" value="{SEARCH_STORE_RESULTS}" /> {L_SECONDS}</dd> </dl> </fieldset> <fieldset> <legend>{L_SEARCH_TYPE}</legend> <dl> <dt><label for="search_type">{L_SEARCH_TYPE}{L_COLON}</label><br /><span>{L_SEARCH_TYPE_EXPLAIN}</span></dt> <dd><select id="search_type" name="config[search_type]" data-togglable-settings="true">{S_SEARCH_TYPES}</select></dd> </dl> </fieldset> <!-- BEGIN backend --> <fieldset id="search_{backend.IDENTIFIER}_settings"> <legend>{backend.NAME}</legend> {backend.SETTINGS} </fieldset> <!-- END backend --> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSEIF S_INDEX --> <script> // <![CDATA[ /** * Popup search progress bar */ function popup_progress_bar(progress_type) { close_waitscreen = 0; // no scrollbars popup('{UA_PROGRESS_BAR}&type=' + progress_type, 400, 240, '_index'); } // ]]> </script> <h1>{L_ACP_SEARCH_INDEX}</h1> <!-- IF S_CONTINUE_INDEXING --> <p>{L_CONTINUE_EXPLAIN}</p> <form id="acp_search_continue" method="post" action="{U_CONTINUE_INDEXING}"> <fieldset> <legend>{L_ACP_SUBMIT_CHANGES}</legend> <p class="submit-buttons"> <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- ELSE --> <p>{L_ACP_SEARCH_INDEX_EXPLAIN}</p> <!-- BEGIN backend --> <!-- IF backend.S_STATS --> <form id="acp_search_index_{backend.NAME}" method="post" action="{U_ACTION}"> <fieldset class="tabulated"> {backend.S_HIDDEN_FIELDS} <legend>{L_INDEX_STATS}{L_COLON} {backend.L_NAME} <!-- IF backend.S_ACTIVE -->({L_ACTIVE}) <!-- ENDIF --></legend> <table class="table1"> <caption>{backend.L_NAME} <!-- IF backend.S_ACTIVE -->({L_ACTIVE}) <!-- ENDIF --></caption> <col class="col1" /><col class="col2" /><col class="col1" /><col class="col2" /> <thead> <tr> <th>{L_STATISTIC}</th> <th>{L_VALUE}</th> <th>{L_STATISTIC}</th> <th>{L_VALUE}</th> </tr> </thead> <tbody> <!-- BEGIN data --> <tr> <td>{backend.data.STATISTIC_1}{L_COLON}</td> <td>{backend.data.VALUE_1}</td> <td>{backend.data.STATISTIC_2}<!-- IF backend.data.STATISTIC_2 -->{L_COLON}<!-- ENDIF --></td> <td>{backend.data.VALUE_2}</td> </tr> <!-- END data --> </tbody> </table> <!-- ENDIF --> <p class="quick"> <!-- IF backend.S_INDEXED --> <input type="hidden" name="action" value="delete" /> <input class="button2" type="submit" value="{L_DELETE_INDEX}" onclick="popup_progress_bar('delete');" /> <!-- ELSE --> <input type="hidden" name="action" value="create" /> <input class="button2" type="submit" value="{L_CREATE_INDEX}" onclick="popup_progress_bar('create');" /> <!-- ENDIF --> </p> {S_FORM_TOKEN} </fieldset> </form> <!-- END backend --> <!-- ENDIF --> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/acp_styles.html 0100666 0000000 0000000 00000015707 13715656641 0015656 ustar 00Unknown Unknown <!-- INCLUDE overall_header.html --> <a id="maincontent"></a> <!-- IF S_STYLE_DETAILS --> <a href="{U_ACTION}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a> <!-- ENDIF --> <!-- IF S_CONFIRM_ACTION --> <form id="confirm" method="post" action="{S_CONFIRM_ACTION}"> <fieldset> <h1>{MESSAGE_TITLE}</h1> <p>{MESSAGE_TEXT}</p> <!-- IF S_CONFIRM_DELETE --> <label><input type="checkbox" class="checkbox" name="confirm_delete_files" /> {L_DELETE_FROM_FS}</label> <!-- ENDIF --> {S_HIDDEN_FIELDS} <div style="text-align: center;"> <input type="submit" name="confirm" value="{L_YES}" class="button2" /> <input type="submit" name="cancel" value="{L_NO}" class="button2" /> </div> </fieldset> </form> <!-- ELSE --> <!-- IF L_TITLE --><h1>{L_TITLE}</h1><!-- ENDIF --> <!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF --> <fieldset class="quick"> <span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.3" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span> </fieldset> <form id="acp_styles" method="post" action="{U_ACTION}"> {S_HIDDEN_FIELDS} {S_FORM_TOKEN} <!-- IF S_STYLE_DETAILS --> <input type="hidden" name="id" value="{STYLE_ID}" /> <fieldset> <dl> <dt><label for="name">{L_STYLE_NAME}{L_COLON}</label></dt> <dd><input type="text" id="name" name="style_name" value="{STYLE_NAME}" /></dd> </dl> <dl> <dt><label>{L_STYLE_PATH}{L_COLON}</label></dt> <dd><strong>{STYLE_PATH}</strong></dd> </dl> <dl> <dt><label>{L_STYLE_VERSION}{L_COLON}</label></dt> <dd><strong>{STYLE_VERSION}</strong></dd> </dl> <dl> <dt><label for="name">{L_COPYRIGHT}{L_COLON}</label></dt> <dd><strong>{STYLE_COPYRIGHT}</strong></dd> </dl> <dl> <dt><label for="style_parent">{L_INHERITING_FROM}{L_COLON}</label></dt> <dd><select id="style_parent" name="style_parent"> <option value=""<!-- IF STYLE_PARENT == 0 --> selected="selected"<!-- ENDIF -->> - </option> <!-- BEGIN parent_styles --> <option value="{parent_styles.STYLE_ID}"<!-- IF parent_styles.STYLE_ID == STYLE_PARENT --> selected="selected"<!-- ENDIF -->>{parent_styles.SPACER}{parent_styles.STYLE_NAME}</option> <!-- END parent_styles --> </select></dd> </dl> <dl> <dt><label for="style_active">{L_STYLE_ACTIVE}{L_COLON}</label></dt> <dd><label><input type="radio" class="radio" name="style_active" value="1"<!-- IF S_STYLE_ACTIVE --> id="style_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label> <label><input type="radio" class="radio" name="style_active" value="0"<!-- IF not S_STYLE_ACTIVE --> id="style_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd> </dl> <!-- IF not S_STYLE_DEFAULT --> <dl> <dt><label for="style_default">{L_STYLE_DEFAULT}{L_COLON}</label></dt> <dd><label><input type="radio" class="radio" name="style_default" value="1" /> {L_YES}</label> <label><input type="radio" class="radio" id="style_default" name="style_default" value="0" checked="checked" /> {L_NO}</label></dd> </dl> <!-- ENDIF --> </fieldset> <fieldset class="submit-buttons"> <legend>{L_SUBMIT}</legend> <input class="button1" type="submit" name="update" value="{L_SUBMIT}" /> <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> {S_FORM_TOKEN} </fieldset> <!-- ENDIF --> <!-- IF .styles_list --> <!-- EVENT acp_styles_list_before --> <table class="table1 styles"> <thead> <tr> <th>{L_STYLE_NAME}</th> <th width="10%" style="white-space: nowrap; text-align: center;">{{ lang('STYLE_VERSION') }}</th> <th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th> <!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF --> <th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th> {STYLES_LIST_EXTRA} <th> </th> </tr> </thead> <!-- BEGIN styles_list --> <tbody id="styles-list-{styles_list.S_ROW_COUNT}"> <tr class="row-highlight<!-- IF styles_list.STYLE_ID and not styles_list.STYLE_ACTIVE --> row-inactive<!-- ENDIF -->"> <!-- IF styles_list.LEVEL is odd --> <!-- IF $ROW_CLASS == 'row1a' --><!-- DEFINE $ROW_CLASS = 'row1b' --><!-- ELSE --><!-- DEFINE $ROW_CLASS = 'row1a' --><!-- ENDIF --> <!-- ELSE --> <!-- IF $ROW_CLASS == 'row2a' --><!-- DEFINE $ROW_CLASS = 'row2b' --><!-- ELSE --><!-- DEFINE $ROW_CLASS = 'row2a' --><!-- ENDIF --> <!-- ENDIF --> <td class="{$ROW_CLASS}" style="padding-{S_CONTENT_FLOW_BEGIN}: {styles_list.PADDING}px;"> <!-- IF styles_list.STYLE_ID and styles_list.COMMENT == '' and styles_list.STYLE_ACTIVE --> <div class="default-style" style="display: none; float: {S_CONTENT_FLOW_END};"> <input class="radio" type="radio" name="default" value="{styles_list.STYLE_ID}"<!-- IF styles_list.DEFAULT --> checked="checked"<!-- ELSE --><!-- DEFINE $S_DEFAULT = 1 --><!-- ENDIF --> title="{L_STYLE_DEFAULT}" /> </div> <!-- ENDIF --> <!-- IF styles_list.DEFAULT or styles_list.SHOW_COPYRIGHT --> <strong>{styles_list.STYLE_NAME}</strong> <!-- IF styles_list.SHOW_COPYRIGHT and styles_list.COMMENT == '' --><span><br />{styles_list.STYLE_COPYRIGHT}</span><!-- ENDIF --> <!-- ELSE --> <span>{styles_list.STYLE_NAME}</span> <!-- ENDIF --> <!-- IF styles_list.COMMENT != '' --> <span class="error"><br />{styles_list.COMMENT}</span> <!-- ENDIF --> <!-- IF not styles_list.STYLE_ID and styles_list.COMMENT == '' --> <span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span> <!-- ENDIF --> </td> <td class="{$ROW_CLASS} users">{{ styles_list.STYLE_VERSION }}</td> <td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td> <!-- IF not STYLES_LIST_HIDE_COUNT --> <td class="{$ROW_CLASS} users">{styles_list.USERS}</td> <!-- ENDIF --> <td class="{$ROW_CLASS} actions"> <!-- BEGIN actions --> <!-- IF styles_list.actions.S_ROW_COUNT > 0 --> | <!-- ENDIF --> <!-- IF styles_list.actions.U_ACTION --> <a href="{styles_list.actions.U_ACTION}"{styles_list.actions.U_ACTION_ATTR}>{styles_list.actions.L_ACTION}</a> <!-- ENDIF --> {styles_list.actions.HTML} <!-- END actions --> </td> {styles_list.EXTRA} <td class="{$ROW_CLASS} mark" width="20"> <!-- IF styles_list.STYLE_ID --> {% if styles_list.STYLE_NAME !== 'prosilver' %} <input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" /> {% endif %} <!-- ELSE --> <!-- IF styles_list.COMMENT != '' --> <!-- ELSE --> <input class="checkbox" type="checkbox" name="dirs[]" value="{styles_list.STYLE_PATH}" /> <!-- ENDIF --> <!-- ENDIF --> </td> </tr> </tbody> <!-- END styles_list --> </table> <!-- ENDIF --> <!-- IF .extra_actions --> <fieldset class="quick"> <!-- BEGIN extra_actions --> <input type="submit" name="{extra_actions.ACTION_NAME}" class="button2" value="{extra_actions.L_ACTION}" /> <!-- END extra_actions --> </fieldset> <!-- ENDIF --> </form> <!-- ENDIF --> <!-- INCLUDE overall_footer.html --> adm/style/admin.css 0100666 0000000 0000000 00000134531 13715656641 0014421 ustar 00Unknown Unknown /* phpBB 3.3 Admin Style Sheet ------------------------------------------------------------------------ Original author: subBlue ( http://www.subblue.com/ ) Copyright (c) phpBB Limited <https://www.phpbb.com> For full copyright and license information, please see the docs/CREDITS.txt file. ------------------------------------------------------------------------ */ /* General markup styles ---------------------------------------- */ * { /* Reset browsers default margin, padding and font sizes */ margin: 0; padding: 0; font-size: 100%; } abbr { text-decoration: none; } body, div, p, th, td, li, dd { font-size: x-small; voice-family: "\"}\""; voice-family: inherit; font-size: small; } html>body, html>div, html>p, html>th, html>td, html>li, html>dd { font-size: small; } html { color: #536482; background: #DBD7D1; /* Always show a scrollbar for short pages - stops the jump when the scrollbar appears. non-ie browsers */ height: 100%; margin-bottom: 1px; word-wrap: break-word; } body { /* Text-Sizing with ems: http://www.clagnut.com/blog/348/ */ font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; color: #536482; background: #DBD7D1; font-size: 62.5%; /* This sets the default font size to be equivalent to 10px */ margin: 10px 15px; } code, samp { font-size: 1.2em; } img { border: 0; } h1 { font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.70em; font-weight: normal; color: #333333; } h2, caption { font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.40em; font-weight: normal; color: #115098; text-align: left; margin-top: 25px; } .rtl h2, .rtl caption { text-align: right; } h3, h4 { font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.20em; text-decoration: none; line-height: 1.20em; margin-top: 25px; } p { margin-bottom: 0.7em; line-height: 1.40em; font-size: 0.90em; } ul { list-style: disc; margin: 0 0 1em 2em; } .rtl ul { margin: 0 2em 1em 0; } hr { border: 0 none; border-top: 1px dashed #999999; margin-bottom: 5px; padding-bottom: 5px; height: 1px; } .centered-text { text-align: center; } .search-box { float: left; } .rtl .search-box { float: right; } .small { font-size: 0.85em; } .hidden { display: none; } @media only screen and (max-width: 800px), only screen and (max-device-width: 800px) { body { margin: 5px 5px 0; } } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { html, body { height: auto; margin: 0; padding: 0; } } /* General links */ a:link, a:visited { color: #105289; text-decoration: none; } a:hover { color: #BC2A4D; text-decoration: underline; } a:active { color: #368AD2; text-decoration: none; } .install-body p a { font-weight: bold; } a#maincontent, a#acl, a#assigned_to { display: block; } /* List items */ ul, ol { list-style-position: inside; margin-left: 1em; } li { display: list-item; list-style-type: inherit; } /* Main blocks ---------------------------------------- */ #wrap { padding: 0 0 15px 0; min-width: 615px; } #page-header { text-align: right; background: url("../images/phpbb_logo.svg") top left no-repeat; height: 54px; font-size: 0.85em; margin-bottom: 10px; } .rtl #page-header { text-align: left; background: url("../images/phpbb_logo.svg") top right no-repeat; } #page-header h1 { color: #767676; font-family: "Trebuchet MS",Helvetica,sans-serif; font-size: 1.70em; padding-top: 10px; } #page-header p { font-size: 1.00em; } #page-header p#skip { display: none; } #page-body { min-width: 650px; } .copyright { font-size: 0.75em; text-align: center; } #content { padding: 30px 10px 10px; position: relative; } #content h1 { color: #115098; line-height: 1.2em; margin-bottom: 0; } #main { float: right; width: 100%; margin: 0 0 0 -210px; } .rtl #main { float: left; margin: 0 -210px 0 0; } .main { margin-left: 210px; } .rtl .main { margin-left: 0; margin-right: 210px; } #page-body.simple-page-body { padding: 0; padding-right: 10px; min-width: 0; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { #wrap, #page-body, #page-body.simple-page-body { padding: 0; min-width: 300px; } #page-header { margin: 5px; padding-left: 160px; height: auto; min-height: 54px; overflow: hidden; } .rtl #page-header { padding-right: 160px; padding-left: 0; } #page-header h1 { font-size: 1.2em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } #page-header fieldset { margin-top: 5px; } #main, .rtl #main, .main, .rtl .main { float: none; width: auto; margin: 0; } #content { background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; padding: 5px; } #page-footer { padding: 0 5px 5px; } } @media only screen and (max-width: 400px), only screen and (max-device-width: 400px) { #page-header { background-size: 76px 26.5px; padding-left: 80px; min-height: 30px; } .rtl #page-header { padding-right: 80px; } #page-header h1 { padding-top: 0; font-size: 1.1em; } } /* Tabbed menu ----------------------------------------*/ #tabs { font-family: Arial, Helvetica, sans-serif; line-height: normal; margin: 0 7px; position: relative; z-index: 2; } #tabs > ul { list-style: none; margin: 0; padding: 0; } #tabs .tab { display: inline-block; float: left; font-size: 0.85em; font-weight: bold; line-height: 14px; } .rtl #tabs .tab { float: right; } #tabs .tab > a { background: #D4D6DA; background: -moz-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #CACBCF), color-stop(100%, #D4D6DA)); background: -webkit-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); background: -o-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); background: -ms-linear-gradient(top, #CACBCF 0%, #D4D6DA 100%); background: linear-gradient(to bottom, #CACBCF 0%, #D4D6DA 100%); border: 1px solid #BBB; border-bottom-width: 0; border-radius: 5px 5px 0 0; color: #767676; display: block; font-weight: bold; margin: 1px 1px 2px 0; padding: 6px 9px 4px; position: relative; text-decoration: none; text-transform: uppercase; white-space: nowrap; cursor: pointer; } #tabs .tab > a:hover { background: #F1F1EE; border-color: #C0BFBB; color: #BC2A4D; } #tabs .activetab > a, #tabs .activetab > a:hover { background: #DCDEE2; background: -moz-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #F2F2F2), color-stop(100%, #DCDEE2)); background: -webkit-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); background: -o-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); background: -ms-linear-gradient(top, #F2F2F2 0%, #DCDEE2 100%); background: linear-gradient(to bottom, #F2F2F2 0%, #DCDEE2 100%); border-color: #999; border-bottom: 2px solid #DCDEE2; box-shadow: 0 1px 1px #FFF inset; color: #23649F; margin: 0 1px 0 0; padding: 7px 10px 4px; } #tabs .activetab > a:hover { color: #115098; } /* Responsive tabs ----------------------------------------*/ .responsive-tab { position: relative; } .responsive-tab > a.responsive-tab-link { display: block; font-size: 16px; position: relative; width: 16px; line-height: 14px; text-decoration: none; padding-left: 9px !important; padding-right: 9px !important; } .responsive-tab .responsive-tab-link:before { content: ''; position: absolute; left: 10px; top: 7px; height: .125em; width: 14px; border-bottom: 0.125em solid #767676; border-top: 0.375em double #767676; } .responsive-tab .responsive-tab-link:hover:before { border-color: #BC2A4D; } .responsive-tab.activetab .responsive-tab-link:before { border-color: #23649F; } .responsive-tab.activetab .responsive-tab-link:hover:before { border-color: #115098; } #tabs .dropdown, #minitabs .dropdown { top: 20px; margin-right: -2px; font-weight: normal; } #tabs .dropdown-right .dropdown { margin-left: -2px; } #tabs .dropdown-contents { list-style: none; margin: 0; } #tabs .dropdown li { border-bottom: 1px dotted #DCDCDC; } #tabs .dropdown li:last-child { border-bottom: none; } #tabs .dropdown a { display: block; padding: 4px 8px; text-align: right; } /* Main Panel ---------------------------------------- */ #acp { position: relative; top: -2px; margin: 0 0 2px; padding: 3px 1px; min-width: 550px; background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; border: 1px #999999 solid; border-radius: 5px; box-shadow: #FFF 0 0 0 1px inset; } #acp:first-child { top: 0; } .panel { background: #F3F3F3 url("../images/innerbox_bg.gif") repeat-x top; padding: 5px 0; border-radius: 5px; overflow: hidden; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { #acp { min-width: 0; min-height: 0; border-radius: 0; border-width: 1px 0; background: #fff; padding: 1px 0; box-shadow: none; } } /* Sub-navigation Menu ---------------------------------------- */ /* Menu */ #menu { float: left; width: 200px; font-size: 1.00em; padding: 0; border-right: 1px solid #CCCFD3; position: relative; } .rtl #menu { float: right; border: none; border-left: 1px solid #CCCFD3; } #menu p { font-size: 0.85em; } #menu ul { list-style: none; margin: 0; padding: 0; word-wrap: normal; } /* Default list state */ #menu li, #menu .header { padding: 0; margin: 0; font-size: 0.85em; font-weight: bold; display: block; } /* Link styles for the sub-section links */ #menu li span { display: block; padding: 3px 3px 3px 8px; margin: 1px 0; text-decoration: none; font-weight: normal; color: #138ECB; } .rtl #menu li span { padding: 3px 8px 3px 3px; } #menu li a:hover, #menu li a:hover span { text-decoration: none; background-color: #FFFFFF; color: #BC2A4D; } #menu li a:active, #menu li a:active span { color: #F632A0; } #menu li#activemenu a span { text-decoration: none; font-weight: bold; color: #1180B7; background: transparent url("../images/arrow_right.gif") 0% 50% no-repeat; } .rtl #menu li#activemenu a span { background: transparent url("../images/arrow_left.gif") 100% 50% no-repeat; } #menu li#activemenu a:hover span, #menu li#activemenu span { text-decoration: none; font-weight: bold; color: #BC2A4D; background: #FFFFFF url("../images/arrow_right.gif") 1% 50% no-repeat; } .rtl #menu li#activemenu a:hover span, .rtl #menu li#activemenu span { background: #FFFFFF url("../images/arrow_left.gif") 99% 50% no-repeat; } #menu li a:active, #menu li a:active span, #menu li#activemenu a:active span { color: #F632A0; } #menu li span.completed { text-decoration: none; padding: 3px 3px 3px 12px; background: url("../images/arrow_down.gif") 1% 50% no-repeat; } .rtl #menu li span.completed { text-decoration: none; padding: 3px 12px 3px 3px; background: url("../images/arrow_down.gif") 99% 50% no-repeat; } #menu .header { font-family: Tahoma, Helvetica, sans-serif; display: block; font-weight: bold; color: #115098; border-bottom: 1px solid #327AA5; padding: 4px 0 2px; margin-top: 15px; text-transform: uppercase; font-size: 0.75em; text-decoration: none; cursor: inherit; outline-style: none; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { #menu, .rtl #menu { float: none; width: auto; border-width: 0; max-width: 200px; margin: 0 auto 10px; } #menu p { text-align: center; } #menu .menu-block.active { margin: 0 -5px; padding: 0 5px 3px; background: rgba(255, 255, 255, .5); border-radius: 5px; } #menu .menu-block.no-header.active { padding-top: 3px; } #menu .menu-block .header { margin-top: 5px; cursor: pointer; border-bottom-width: 0; position: relative; text-decoration: underline; } #menu .menu-block .header:focus, #menu .menu-block.active .header { color: #D31141; text-decoration: none; } #menu .menu-block ul { display: none; } .nojs #menu .menu-block:hover ul, #menu .menu-block.active ul, #menu .menu-block.no-header ul { display: block; } #menu .menu-block li:last-child { border-bottom: 1px solid #327AA5; } #menu .menu-block:last-child li:last-child, #menu .menu-block.active li:last-child { border-bottom-width: 0; } #menu .menu-block li a span { border-radius: 2px; } } /* Table styles ---------------------------------------- */ table { width: 100%; border: 1px solid #CCCFD3; background-color: #FFFFFF; padding: 1px; } th { padding: 3px 4px; color: #FFFFFF; background: #70AED3 url("../images/gradient2b.gif") bottom left repeat-x; border-top: 1px solid #6DACD2; border-bottom: 1px solid #327AA5; text-align: left; font-size: 0.75em; text-transform: uppercase; } td { text-align: left; font-size: 0.85em; padding: 4px; line-height: 1.20em; } .rtl th, .rtl td { text-align: right; } .table1 { clear: both; border-spacing: 1px; border-collapse: separate; } .table2 { display: inline-block; border-spacing: 1px; border-collapse: separate; } .lside { display: flex; align-items: stretch; width: 100%; } .tabled { width: 1%; } dt#color_palette_placeholder table { margin-right: 5px; width: 80px; } #color_palette_placeholder td { padding: 0; } table.type2 { border: none; background: none; padding: 0; } table.type2 th { background: none; border-top: none; text-align: center; color: #115098; padding: 2px 0; } table.type2 td { padding: 0; font-size: 1em; } table.type2 td.name { padding: 2px; vertical-align: middle; } table.type3 { float: right; width: 300px; border: none; background-color: transparent; padding: 0; } .rtl table.type3 { float: left; } table.type3 thead th { background-color: transparent; border-top: none; text-align: center; color: #115098; padding: 0 3px; font-size: 0.85em; font-weight: normal; text-transform: none; } table.type3 tbody th { border-top: none; text-align: left; text-transform: none; padding: 0; border: none; font-size: 0.90em; font-weight: normal; width: 100%; } .rtl table.type3 tbody th { text-align: right; } table.type3 td { text-align: center; padding: 1px; } th.name { text-align: left; width: auto; } .rtl th.name { text-align: right; } td.name { text-align: left; font-weight: bold; } .rtl td.name { text-align: right; } .entry { text-align: left; font-weight: normal; } .rtl .entry { text-align: right; } .row1 { background-color: #F9F9F9; } table.zebra-table tbody tr:nth-child(odd) { background-color: #F9F9F9; } .row2 { word-break: break-all; background-color: #DCEBFE; } table.zebra-table tbody tr:nth-child(even) { background-color: #DCEBFE; } .row3 { background-color: #DBDFE2; } .row4 { background-color: #E4E8EB; } .col1 { background-color: #DCEBFE; } .col2 { background-color: #F9F9F9; } /* 4 row background colours for trees */ .row1a { background-color: #F9F9F9; } .row1b { background-color: #F6F6F6; } .row2a { background-color: #E7EEF4; } .row2b { background-color: #E3EBF2; } tr.row-highlight:hover td { background-color: #DBDFE2; } .spacer { background-color: #DBDFE2; height: 1px; line-height: 1px; } /* Deactivated row */ .row-inactive { color: #999; } .row-inactive a, .row-inactive strong { color: #888; } .row-inactive a:hover { color: #BC2A4D; } /* Specific tables */ table.forums td.folder { width: 27px; text-align: center; } table td.actions { vertical-align: middle; width: 100px; text-align: center; white-space: nowrap; } table tr:first-child td.actions .up, table tr:last-child td.actions .down { display: none; } table tr:first-child td.actions .up-disabled, table tr:last-child td.actions .down-disabled { display: inline !important; } table.styles td.users, table td.mark { text-align: center; } table.fixed-width-table { table-layout: fixed; word-break: break-word; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { display: block; } table.responsive thead, table.responsive th, table.responsive colgroup { display: none; } table.responsive.show-header thead, table.responsive.show-header th:first-child, table.responsive caption { display: block; width: auto !important; text-align: left !important; margin: 0; } table.responsive { background: transparent none; border-width: 0; padding: 0; } table.responsive caption { padding: 3px 4px; color: #FFFFFF; background: #70AED3 url("../images/gradient2b.gif") bottom left repeat-x; border-top: 1px solid #6DACD2; border-bottom: 1px solid #327AA5; text-align: left; font-size: 0.75em; font-weight: bold; text-transform: uppercase; } table.responsive.show-header th:first-child span.rank-img, table.responsive.no-caption caption, table.responsive.no-header thead { display: none; } table.responsive tr { margin: 2px 0; border: 1px solid #CCCFD3; background-color: #FFFFFF; padding: 1px 1px 0; overflow: hidden; } table.responsive tr.row1 td { background-color: #F9F9F9; } table.responsive tr.row2 td { background-color: #DCEBFE; } table.responsive tr.row3 td { background-color: #DBDFE2; } table.responsive tr.row4 td { background-color: #E4E8EB; } table.responsive tr.col1 td { background-color: #DCEBFE; } table.responsive tr.col2 td { background-color: #F9F9F9; } table.responsive tr.row1a td { background-color: #F9F9F9; } table.responsive tr.row1b td { background-color: #F6F6F6; } table.responsive tr.row2a td { background-color: #E7EEF4; } table.responsive tr.row2b td { background-color: #E3EBF2; } table.responsive td { width: auto !important; text-align: left !important; padding: 4px; margin-bottom: 1px; } .rtl table.responsive td { text-align: right !important; } table.responsive td.empty { display: none !important; } table.responsive td > dfn { display: inline-block !important; } table.responsive td > dfn:after { content: ':'; padding-right: 5px; } table.responsive.two-columns td { width: 50% !important; float: left; -moz-box-sizing: border-box; box-sizing: border-box; } .rtl table.responsive.two-columns td { float: right; } table.responsive.two-columns td:nth-child(2n+1) { clear: left; } table.responsive span.rank-img { float: none; padding-right: 5px; } table.responsive#memberlist td:first-child input[type="checkbox"] { float: right; } /* Specific tables */ table.responsive.forums td.folder { float: left; width: 27px; background: transparent; } .rtl table.responsive.forums td.folder { float: right; } table.responsive.forums td.forum-desc { margin-left: 35px; min-height: 27px; background: transparent; } .rtl table.responsive.forums td.forum-desc { margin-left: 0; margin-right: 35px; } table.responsive td.actions { clear: both; text-align: right !important; } .rtl table.responsive td.actions { text-align: left !important; } table.responsive.styles tr.responsive-style-row td:first-child { padding-left: 4px !important; padding-right: 4px !important; } table.responsive.styles td:first-child > dfn, table.responsive td.actions > dfn { display: none !important; } .horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { display: none; } .colour-palette a { display: inline-block !important; } } /* General form styles ----------------------------------------*/ fieldset { margin: 15px 0; padding: 10px; border-top: 1px solid #D7D7D7; border-right: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #D7D7D7; background-color: #FFFFFF; position: relative; border-radius: 3px; } fieldset h2 { margin-top: 0; } .rtl fieldset { border-top: 1px solid #D7D7D7; border-right: 1px solid #D7D7D7; border-bottom: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC; } fieldset p { font-size: 0.85em; } legend { padding: 1px 0; font-family: Tahoma,arial,Verdana,Sans-serif; font-size: .9em; font-weight: bold; color: #115098; margin-top: -.4em; position: relative; text-transform: none; line-height: 1.2em; top: -.2em; vertical-align: middle; } input, textarea { font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 0.90em; font-weight: normal; vertical-align: middle; padding: 2px; color: #111111; border-left: 1px solid #AFAEAA; border-top: 1px solid #AFAEAA; border-right: 1px solid #D5D5C8; border-bottom: 1px solid #D5D5C8; background-color: #E3DFD8; } .rtl input, .rtl textarea { border-left: 1px solid #D5D5C8; border-top: 1px solid #AFAEAA; border-right: 1px solid #AFAEAA; border-bottom: 1px solid #D5D5C8; } input:hover, textarea:hover { border-left: 1px solid #AFAEAA; border-top: 1px solid #AFAEAA; border-right: 1px solid #AFAEAA; border-bottom: 1px solid #AFAEAA; background-color: #E9E9E2; } input.langvalue, textarea.langvalue { width: 90%; } input[type="number"] { width: 60px; -moz-padding-end: 0; } optgroup, select { background-color: #FAFAFA; border: 1px solid #666666; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 0.85em; font-weight: normal; font-style: normal; cursor: pointer; padding: 1px; vertical-align: middle; width: auto; color: #000; } select:focus { outline-style: none; } optgroup { font-size: 1.00em; font-weight: bold; } optgroup.disabled-options { display: none; background-color: gray; } option { padding: 0 1em 0 0; color: #000; } option.disabled-option { color: graytext; } .rtl option { padding: 0 0 0 1em; } .sep { font-weight: bold; } .username-coloured { font-weight: bold; } textarea { font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 0.85em; width: 60%; padding: 2px; } label { cursor: pointer; font-size: 0.85em; padding: 0 5px 0 0; } .rtl label { padding: 0 0 0 5px; } label input { font-size: 1.00em; vertical-align: middle; } label img { vertical-align: middle; } fieldset.quick, p.quick { margin: 0 0 5px; padding: 5px 0 0; border: none; background-color: transparent; text-align: right; } .rtl fieldset.quick, .rtl p.quick { text-align: left; } fieldset.quick legend { display: none; } fieldset.tabulated { background: none; margin: 0; margin-top: 5px; padding: 0; border: 0; } fieldset.tabulated legend { display: none; } fieldset.nobg { margin: 15px 0 0 0; padding: 0; border: none; background-color: transparent; } fieldset.display-options { margin: 15px 0 2px 0; padding: 0 0 4px 0; border: none; background-color: transparent; text-align: center; font-size: 0.85em; } fieldset.display-options select, fieldset.display-options input, fieldset.display-options label { font-size: 1.00em; vertical-align: middle; } select option.disabled { background-color: #bbb; color: #fff; } /* Special case inputs */ select#board_timezone, select#full_folder_action { width: 95%; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { fieldset { padding: 5px; } fieldset.quick, p.quick { float: none !important; text-align: center; } fieldset.display-options { clear: both; } } /* Definition list layout for forms Other general def. list properties defined in prosilver_main.css ---------------------------------------- */ dl { font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 1.00em; } dt { float: left; width: auto; } .rtl dt { float: right; } dd { color: #666666;} dd + dd { padding-top: 5px;} dt span { padding: 0 5px 0 0;} .rtl dt span { padding: 0 0 0 5px;} dt .explain { font-style: italic;} dt label { font-size: 1.00em; text-align: left; font-weight: bold; color: #4A5A73; } .rtl dt label { text-align: right; } dd label { font-size: 1.00em; white-space: nowrap; margin: 0 10px 0 0; color: #4A5A73; } .rtl dd label { margin: 0 0 0 10px; } html>body dd label input { vertical-align: text-bottom;} /* Tweak for Moz to align checkboxes/radio buttons nicely */ dd input { font-size: 1.00em; max-width: 100%; margin: 2px 0; } dd select { font-size: 100%; font-size: 1em; width: auto; max-width: 100%; margin: 2px 0; } dd textarea { font-size: 0.90em; width: 90%; } fieldset dl { margin-bottom: 10px; font-size: 0.85em; } fieldset dt { width: 45%; text-align: left; border: none; border-right: 1px solid #CCCCCC; padding-top: 3px; } .rtl fieldset dt { text-align: right; border: none; border-left: 1px solid #CCCCCC; } fieldset #color_palette_placeholder { padding-top: 0; } fieldset dd { margin: 0 0 0 45%; padding: 0 0 0 5px; border: none; border-left: 1px solid #CCCCCC; vertical-align: top; font-size: 1.00em; } .rtl fieldset dd { margin: 0 45% 0 0; padding: 0 5px 0 0; border: none; border-right: 1px solid #CCCCCC; } dd.full, .rtl dd.full { margin: 0; border: 0; padding: 0; padding-top: 3px; text-align: center; width: 95%; } /* Hover highlights for form rows */ fieldset dl:hover dt, fieldset dl:hover dd { border-color: #666666; } fieldset dl:hover dt label { color: #000000; } fieldset dl dd label:hover { color: #BC2A4D; } input:focus, textarea:focus { border: 1px solid #BC2A4D; background-color: #E9E9E2; color: #BC2A4D; outline-style: none; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { fieldset dl { margin-bottom: 5px; padding-bottom: 5px; border-bottom: 1px solid #e8e8e8; } fieldset > dl:last-child, fieldset > form:last-child > dl:last-child { border-bottom-width: 0; margin-bottom: 0; } fieldset dt, .rtl fieldset dt, fieldset dd, .rtl fieldset dd { border-width: 0; margin-left: 0; margin-right: 0; float: none; width: auto; } fieldset .responsive-columns dt { float: left; } .ltr fieldset dd { padding-left: 20px; } .rtl fieldset dd { padding-right: 20px; } select, dd select, dd input { max-width: 300px; } input[type="number"], dd input[type="number"] { max-width: 70px; } } @media only screen and (max-width: 400px), only screen and (max-device-width: 400px) { select, dd select, dd input { max-width: 240px; } } /* Submit button fieldset or paragraph ---------------------------------------- */ fieldset.submit-buttons { text-align: center; border: none; background-color: transparent; margin: 0; padding: 4px; margin-top: -1px; } p.submit-buttons { text-align: center; margin: 0; padding: 4px; margin-top: 10px; } fieldset.submit-buttons input, p.submit-buttons input { padding: 3px 2px; } fieldset.submit-buttons legend { display: none; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { p.submit-buttons { margin-top: 0; } } /* Input field styles ---------------------------------------- */ input.radio, input.checkbox, input.permissions-checkbox { width: auto !important; background-color: transparent; border: none; cursor: pointer; } input.full, textarea.full { width: 99%; } input.medium { width: 50%;} input.narrow { width: 25%;} input.tiny { width: 10%;} input.autowidth { width: auto !important;} .box2 .inputbox { background-color: #E9E9E9;} /* Form button styles ---------------------------------------- */ a.button1, input.button1, a.button2, input.button2 { width: auto !important; padding: 1px 3px 0 3px; font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; color: #000; font-size: 0.85em; background: #EFEFEF url("../images/bg_button.gif") repeat-x top; cursor: pointer; } a.button1, input.button1 { font-weight: bold; border: 1px solid #666666; } /* Alternative button */ a.button2, input.button2 { border: 1px solid #666666; } /* <a> button in the style of the form buttons */ a.button1, a.button1:link, a.button1:visited, a.button1:active, a.button2, a.button2:link, a.button2:visited, a.button2:active { text-decoration: none; color: #000000; padding: 4px 8px; } /* Hover states */ a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover { border: 1px solid #BC2A4D; background: #EFEFEF url("../images/bg_button.gif") repeat bottom; color: #BC2A4D; } input.disabled { font-weight: normal; color: #666666; } /* Focus states */ input.button1:focus, input.button2:focus { outline-style: none; } /* jQuery popups ---------------------------------------- */ .phpbb_alert { background-color: #FFFFFF; border: 1px solid #999999; position: fixed; display: none; top: 150px; left: 0; right: 0; width: 620px; margin: 0 auto; z-index: 50; padding: 25px; padding: 0 25px 20px 25px; } .phpbb_alert .alert_close { display: block; float: right; width: 16px; height: 16px; overflow: hidden; text-decoration: none !important; background: transparent url("../images/alert_close.png") 0 0 no-repeat; margin-top: -7px; margin-right: -31px; } .phpbb_alert .alert_close:hover { background-position: 0 -16px; } .phpbb_alert p { margin: 8px 0; padding-bottom: 8px; } .phpbb_alert label { display: block; margin: 8px 0; padding-bottom: 8px; } .phpbb_alert div.alert_text > p, .phpbb_alert div.alert_text > label, .phpbb_alert div.alert_text > select, .phpbb_alert div.alert_text > textarea, .phpbb_alert div.alert_text > input { font-size: 0.9em; } #darkenwrapper { display: none; position: relative; z-index: 44; } #darken { position: fixed; left: 0; top: 0; width: 100%; height: 100%; background-color: #000000; opacity: 0.5; z-index: 45; } @media only screen and (max-height: 500px), only screen and (max-device-width: 500px) { .phpbb_alert { top: 25px; } } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { .phpbb_alert { width: auto; margin: 0 25px; } } #loading_indicator { background: #000000 url("../images/loading.gif") center center no-repeat; border-radius: 5px; display: none; opacity: 0.8; margin-top: -50px; margin-left: -50px; height: 50px; width: 50px; position: fixed; left: 50%; top: 50%; z-index: 51; } /* Pagination ---------------------------------------- */ .pagination { font-size: .85em; height: 1%; /* IE tweak (holly hack) */ width: auto; text-align: right; margin: 5px 0; } .top-pagination { float: right; margin: 15px 0 5px 0; } .rtl .pagination { text-align: left; float: left; } li.pagination { margin-top: 0; } .pagination img { vertical-align: middle; } .pagination ul { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; margin-left: 0; margin-bottom: 0; } li.pagination ul { margin-top: -2px; vertical-align: middle; } .pagination ul li, dl .pagination ul li, dl.icon .pagination ul li { display: inline; padding: 0; font-size: 100%; line-height: normal; } .pagination li a, .pagnation li span, li .pagination li a, li .pagnation li span, .pagination li.active span, .pagination li.ellipsis span { font-weight: normal; text-decoration: none; padding: 0 2px; border: 1px solid transparent; font-size: 0.9em; line-height: 1.5em; } .pagination li a, .pagination li a:link, .pagination li a:visited { color: #5C758C; background-color: #ECEDEE; border-color: #B4BAC0; } .pagination li.ellipsis span { background-color: transparent; color: #000000; } .pagination li.active span { color: #FFFFFF; background-color: #4692BF; border-color: #4692BF; } .pagination li a:hover, .pagination .active a:hover { color: #FFFFFF; background-color: #368AD2; border-color: #368AD2; } .pagination li a:active, .pagination li.active a:active { color: #5C758C; background-color: #ECEDEE; border-color: #B4BAC0; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { .pagination, .rtl .pagination { float: none; text-align: center; margin: 5px 0; } .pagination li a, .pagination li span { display: inline-block; min-width: 10px; } } /* Action Highlighting ---------------------------------------- */ .successbox, .errorbox, .warningbox { padding: 8px; margin: 10px 0; color: #FFFFFF; text-align: center; clear: both; } .success { color: #228822; } .error { color: #BC2A4D; } .successbox { background-color: #228822; } .errorbox { background-color: #BC2A4D; } .warningbox { background-color: #fca600; } .successbox h3, .errorbox h3 { color: #FFFFFF; margin: 0 0 0.5em; font-size: 1.10em; font-family: "Lucida Grande",Verdana,Helvetica,Arial,sans-serif; } .successbox p, .errorbox p { color: #FFFFFF; font-size: 0.85em; margin-bottom: 0; } .errorbox a:link, .errorbox a:active, .errorbox a:visited, .successbox a:link, .successbox a:active, .successbox a:visited { color: #DBD7D1; text-decoration: underline; font-weight: bold; } .errorbox a:hover, .successbox a:hover { color: #FFFFFF; text-decoration: none; font-weight: bold; } #log-container { display: none; max-height: 300px; padding: 8px; margin: 10px 0; clear: both; overflow-y: auto; background-color: #FFFFFF; } #log-container.show_log_container { display: block; border: 1px solid #DBD7D1; } .log { font-size: 0.8em; } .notice { background-color: #62A5CC; } .download-box { margin: 10px 0 10px 0; } /* Special cases for the error page */ #errorpage #page-header a { font-weight: bold; line-height: 6em; } #errorpage #content { padding-top: 10px; } #errorpage #content h1 { color: #DF075C; } #errorpage #content h2 { margin-top: 20px; margin-bottom: 5px; border-bottom: 1px solid #CCCCCC; padding-bottom: 5px; color: #333333; } /* Tooltip for permission roles */ .tooltip { width: 200px; color: #000; text-align: center; border: 1px solid #AAA; } .tooltip span.top { background: #EFEFEF; font-weight: bold; padding: 2px; } .tooltip span.bottom { padding: 5px; color: #000000; background: #FFFFFF; } /* Format Buttons for signature editor */ #format-buttons { margin: 15px 0 2px 0; } #format-buttons input, #format-buttons select { vertical-align: middle; } .row, fieldset dl { overflow: hidden; } /* Syntax Highlighting ---------------------------------------- */ .sourcenum { color: gray; font-family: Monaco, 'Courier New', monospace; font-size: 1.25em; font-weight: bold; line-height: 1.20em; text-align: right; padding: 0; } .rtl .sourcenum { text-align: left; } .source { font-family: Monaco, 'Courier New', monospace; font-size: 1.25em; line-height: 1.20em; padding: 0; } .syntaxbg { color: #FFFFFF; } .syntaxcomment { color: #FF8000; } .syntaxdefault { color: #0000BB; } .syntaxhtml { color: #000000; } .syntaxkeyword { color: #007700; } .syntaxstring { color: #DD0000; } /* Permission interface ---------------------------------------- */ .column1, .column2 { width: 48%; float: left; } .ltr .column2, .rtl .column1 { float: right; } fieldset.permissions legend { text-transform: none; } fieldset.permissions legend input{ height: 1.1em; } /* Permission sections */ fieldset.permissions .permissions-simple { text-align: left; padding-top: 3px; } .rtl fieldset.permissions .permissions-simple { text-align: right; } fieldset.permissions .permissions-advanced { padding: 10px 0 0 5px; vertical-align: top; clear: right; } .rtl fieldset.permissions .permissions-advanced { padding: 10px 5px 0 0; clear: left; } fieldset.permissions .permissions-switch { float: right; } .rtl fieldset.permissions .permissions-switch { float: left; } fieldset.permissions .padding { } .permissions-switch { margin-top: -6px; font-size: .9em; } .permissions-switch a { text-decoration: underline; } .permissions-reset { padding-bottom: 10px; } .permissions-reset a { font-size: .85em; } /* Tabbed menu */ .permissions-category { line-height: normal; margin: 0 0 -1px 7px; min-width: 570px; font-size: 0.85em; } .rtl .permissions-category { margin: 0 7px -1px 0; } .permissions-category ul { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; } .permissions-category li { display: inline; margin: 0; padding: 0; font-size: 1em; font-weight: bold; } .permissions-category a { float: left; background: url("../images/bg_tabs_alt1.gif") no-repeat 0% -35px; margin: 0 1px 0 0; padding: 0 0 0 6px; text-decoration: none; position: relative; } .rtl .permissions-category a { float: right; } .permissions-category a span.tabbg { float: left; display: block; background: url("../images/bg_tabs_alt2.gif") no-repeat 100% -35px; padding: 7px 12px 6px 6px; color: #536482; white-space: nowrap; } .rtl .permissions-category a span.tabbg { float: right; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ .permissions-category a span.tabbg, .rtl .permissions-category a span.tabbg { float: none;} /* End hack */ .permissions-category a:hover span.tabbg { color: #DD6900; } .permissions-category .activetab a { background-position: 0 0; } .permissions-category .activetab a span.tabbg { background-position: 100% 0; color: #333333; } .permissions-category a:hover { background-position: 0 -70px; } .permissions-category a:hover span.tabbg { background-position: 100% -70px; } .permissions-category .activetab a:hover span.tabbg { color: #333333; background-position: 100% 0; } .permissions-category .activetab a:hover { background-position: 0 0; } .permissions-category a span.colour { border: 1px solid #536482; display: block; float: left; width: 10px; height: 10px; margin: 0 5px 0 0; } /* Most browsers will have to live with a left aligned icon in RTL mode, as (currently) only Firefox 3.0 Alpha 3 renders it correctly without destroying it .rtl .permissions-category a span.colour { float: right; margin: 0 0 0 5px; } */ .permissions-category .activetab span.colour { border-color: #333333; } .permissions-category a:hover span.colour { border-color: #DD6900; } .permissions-category .activetab a:hover span.colour { border-color: #333333; } /* Permission preset colours */ .permissions-preset-yes span.colour, .yes { background-color: #86F786; } .permissions-preset-custom span.colour { background-color: #B2BBDD; } .permissions-preset-never span.colour { background-color: #DD0000; } .permissions-preset-no span.colour, .never { background-color: #EFB0B2; } /* Permission panel ---------------------------------------- */ .permissions-panel { float: left; background-color: #CADCEB; width: 100%; border-radius: 5px; overflow: hidden; padding: 5px 0; } .rtl .permissions-panel { float: right; } /* Permission table ---------------------------------------- */ .permissions-panel .tablewrap { margin: 0 10px; } .permissions-panel table { width: 100%; } .permissions-panel th { text-transform: none; } .permissions-panel th.value { text-align: center; } .permissions-panel th.name { text-align: left; width: auto; text-transform: none; } .rtl .permissions-panel th.name { text-align: right; } .permissions-panel th.permissions-name { border: none; color: #536482; font-weight: normal; } .permissions-panel th.permissions-name a.trace { display: inline; } .permissions-panel th.row3 { background-image: none; background-color: #D1D7DC; color: #536482; border: none; } .permissions-panel th.row4 { background-image: none; background-color: #E4E8EB; color: #536482; border: none; } .permissions-panel th a:link, .permissions-panel th a:hover, .permissions-panel th a:visited { display: block; color: #FFFFFF; text-decoration: underline; } .permissions-panel td.permissions-yes label:hover { background-color: #86F786; } .permissions-panel td.permissions-no label:hover { background-color: #EFB0B2; } .permissions-panel td.permissions-never label:hover { background-color: #DD0000; } .permissions-panel td { padding: 0; text-align: center; width: 10%; } .permissions-panel td label { display: block; margin: 0; padding: 0; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { .column1, .column2 { float: none !important; width: auto; } .permissions-simple { clear: both; } .permissions-simple td, .permissions-simple dd { width: auto !important; margin-left: 0 !important; margin-right: 0 !important; } .permissions-simple dd { margin-top: 5px; } .permissions-panel .tablewrap { margin: 0 5px; } .permissions-category { min-width: 0; margin: 0 !important; } .permissions-category ul { display: block; } .permissions-category a, .permissions-category a span.tabbg { display: block; float: none !important; background: transparent none; } .permissions-category a { background: #d9e5ee; margin: 5px 0; padding: 0 !important; border-radius: 3px; text-decoration: underline; } .permissions-category .activetab a { background-color: #dd6900; color: #fff; } .permissions-category a span.tabbg { color: inherit !important; padding-top: 6px !important; padding-bottom: 6px !important; } .permissions-category .activetab span.colour { border-color: #fff; } } /* Avatars gallery ---------------------------------------- */ #gallery { display: block; margin: 0 -5px; padding: 0; overflow: hidden; } #gallery li { display: block; float: left; border: 1px solid #ccc; border-radius: 2px; background: #fff; padding: 5px; margin: 5px; } #gallery li:hover { background-color: #eee; } #gallery li label { display: block; text-align: center; padding: 0; } /* Dropdown menu ----------------------------------------*/ .dropdown { position: absolute; left: 0; top: 22px; z-index: 2; border: 1px solid transparent; border-radius: 5px; padding: 9px 0 0; } .dropdown-up .dropdown { top: auto; bottom: 18px; padding: 0 0 9px; } .dropdown-left .dropdown { left: auto; right: 0; } .dropdown .pointer, .dropdown .pointer-inner { position: absolute; width: 0; height: 0; border-top-width: 0; border-bottom: 10px solid transparent; border-left: 10px dashed transparent; border-right: 10px dashed transparent; -webkit-transform: rotate(360deg); /* better anti-aliasing in webkit */ display: block; } .dropdown-up .pointer, .dropdown-up .pointer-inner { border-bottom-width: 0; border-top: 10px solid transparent; } .dropdown .pointer { right: auto; left: 10px; top: 0; z-index: 3; } .dropdown-up .pointer { bottom: 0; top: auto; } .dropdown-left .dropdown .pointer { left: auto; right: 10px; } .dropdown .pointer-inner { top: auto; bottom: -11px; left: -10px; } .dropdown-up .pointer-inner { bottom: auto; top: -11px; } .dropdown .pointer { border-color: #B9B9B9 transparent; } .dropdown .pointer-inner { border-color: #FFF transparent; } .dropdown .dropdown-contents { z-index: 2; overflow: hidden; overflow-y: auto; background: #fff; border: 1px solid #b9b9b9; border-radius: 5px; padding: 5px; position: relative; min-width: 40px; max-height: 200px; box-shadow: 1px 3px 5px rgba(0, 0, 0, 0.2); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .dropdown-up .dropdown-contents { box-shadow: 1px 0 5px rgba(0, 0, 0, 0.2); } .dropdown li { float: none; margin: 0; white-space: nowrap; text-align: left; } .rtl .dropdown li { text-align: right; } .wrap .dropdown li, .dropdown.wrap li { white-space: normal; } .dropdown li:before, .dropdown li:after { display: none !important; } .roles-options > .dropdown { left: auto; top: 3.2em; width: 250px; } .rtl .roles-options > .dropdown { right: auto; } .roles-options { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; width: 250px; } .roles-options > span { border: 1px solid #DEDEDE; border-radius: 3px; padding: 4px; width: 250px; display: none; background: url('../images/arrow_down.gif') no-repeat 245px .7em; } .rtl .roles-options > span { background: url('../images/arrow_down.gif') no-repeat 7px .7em; } .roles-options li { list-style: none; } .roles-highlight { background-color: #1e90ff; color: #fff; } /* Classes for additional tasks ---------------------------------------- */ .current-ext { color: #228822; } .outdated-ext { color: #BC2A4D; } .phpinfo { overflow: auto; width: 99%; direction: ltr; } .phpinfo td, .phpinfo th, .phpinfo h2, .phpinfo h1 { text-align: left; } .requirements_not_met { padding: 5px; background-color: #BC2A4D; } .requirements_not_met dt label, .requirements_not_met dd p { color: #FFFFFF; font-size: 1.4em; } @media only screen and (max-width: 700px), only screen and (max-device-width: 700px) { .responsive-hide { display: none !important; } .responsive-show { display: block !important; } .responsive-show-inline { display: inline !important; } .responsive-show-inline-block { display: inline-block !important; } } .clearfix { overflow: hidden; } .pagination:after, #page-header:after, #page-body:after, #tabs:after, #tabs > ul:after, #tabs li:after, #acp:after, #content:after { content: ''; clear: both; display: block; } #progress-bar { position: relative; width: 90%; text-align: center; height: 25px; margin: 20px auto; border: 1px solid #cecece; } #progress-bar #progress-bar-text { position: absolute; top: 0; width: 100%; color: #000; } #progress-bar #progress-bar-filler { display: block; position: relative; top: 0; left: 0; background-color: #3c84ad; width: 0; height: 25px; overflow: hidden; color: #fff; } #progress-bar p { line-height: 25px; font-weight: bold; } .send-stats-row { margin: 15px 0; } .send-stats-row:before { display: table; content: " "; } .send-stats-tile { position: relative; padding: 14px; margin-bottom: 20px; background-color: #eff0f2; border-radius: 6px; box-shadow: rgba(0,0,0,0.3) 1px 1px 5px; } .send-stats-tile h2 { margin-top: 0; text-align: center; padding-bottom: 1em; } .send-stats-tile i { padding-right: 0.3em; } .icon { font-family: FontAwesome; font-style: normal; } .send-stats-data-row { background: #f9f9f9; border-radius: 6px; border: #DEDEDE 1px solid; padding: 10px; border-top-width: 0; border-top-right-radius: 0; border-top-left-radius: 0; } .send-stats-data-hidden .configlist { display: none; } .send-stats-data-only-row { border-radius: 6px !important; border-bottom-width: 1px !important; } .send-stats-data-hidden { padding: 0; border: none; } .send-stats-row > .send-stats-data-row:first-child { background-color: #d9edf7; border-bottom-width: 0; border-top-right-radius: 6px; border-top-left-radius: 6px; border-top-width: 1px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .send-stats-settings dt, .send-stats-settings dd { min-width: 25px; } .send-stats-settings dd { line-height: 1.5em; } .send-stats-settings input { display: none; } .send-stats-settings input[type=checkbox] + label:before { content: "\f096"; font-family: FontAwesome; font-size: 1.5em; } .send-stats-settings input[type=checkbox]:checked + label:before { content: "\f14a"; color: #3c763d; } .send-stats-data-row a:hover span { text-decoration: underline; } .send-stats-data-row a { text-decoration: none; cursor: default; } .send-stats-data-row i { padding-left: 6px; } .configlist { word-wrap: break-word; word-break: break-all; } /* stylelint-disable declaration-property-unit-whitelist */ .emoji { min-height: 18px; min-width: 18px; height: 1em; width: 1em; } /* stylelint-enable declaration-property-unit-whitelist */ adm/style/admin.js 0100666 0000000 0000000 00000014612 13715656641 0014242 ustar 00Unknown Unknown /** * phpBB3 ACP functions */ /** * Parse document block */ function parse_document(container) { var test = document.createElement('div'), oldBrowser = (typeof test.style.borderRadius == 'undefined'); delete test; /** * Navigation */ container.find('#menu').each(function() { var menu = $(this), blocks = menu.children('.menu-block'); if (!blocks.length) { return; } // Set onclick event blocks.children('a.header').click(function() { var parent = $(this).parent(); if (!parent.hasClass('active')) { parent.siblings().removeClass('active'); } parent.toggleClass('active'); }); // Set active menu menu.find('#activemenu').parents('.menu-block').addClass('active'); // Check if there is active menu if (!blocks.filter('.active').length) { blocks.filter(':first').addClass('active'); } }); /** * Responsive tables */ container.find('table').not('.not-responsive').each(function() { var $this = $(this), th = $this.find('thead > tr > th'), columns = th.length, headers = [], totalHeaders = 0, i, headersLength; // Find columns $this.find('colgroup:first').children().each(function(i) { var column = $(this); $this.find('td:nth-child(' + (i + 1) + ')').addClass(column.prop('className')); }); // Styles table if ($this.hasClass('styles')) { $this.find('td:first-child[style]').each(function() { var style = $(this).attr('style'); if (style.length) { $(this).parent('tr').attr('style', style.toLowerCase().replace('padding', 'margin')).addClass('responsive-style-row'); } }); } // Find each header if (!$this.data('no-responsive-header')) { th.each(function(column) { var cell = $(this), colspan = parseInt(cell.attr('colspan')), dfn = cell.attr('data-dfn'), text = dfn ? dfn : $.trim(cell.text()); if (text == ' ') text = ''; colspan = isNaN(colspan) || colspan < 1 ? 1 : colspan; for (i=0; i<colspan; i++) { headers.push(text); } totalHeaders ++; if (dfn && !column) { $this.addClass('show-header'); } }); } headersLength = headers.length; // Add header text to each cell as <dfn> $this.addClass('responsive'); if (totalHeaders < 2) { $this.addClass('show-header'); return; } $this.find('tbody > tr').each(function() { var row = $(this), cells = row.children('td'), column = 0; if (cells.length == 1) { row.addClass('big-column'); return; } cells.each(function() { var cell = $(this), colspan = parseInt(cell.attr('colspan')), text = $.trim(cell.text()); if (headersLength <= column) { return; } if ((text.length && text !== '-') || cell.children().length) { if (headers[column] != '') { cell.prepend('<dfn style="display: none;">' + headers[column] + '</dfn>'); } } else { cell.addClass('empty'); } colspan = isNaN(colspan) || colspan < 1 ? 1 : colspan; column += colspan; }); }); // Remove <dfn> in disabled extensions list $this.find('tr.ext_disabled > .empty:nth-child(2) + .empty').siblings(':first-child').children('dfn').remove(); }); /** * Hide empty responsive tables */ container.find('table.responsive > tbody').each(function() { var items = $(this).children('tr'); if (items.length == 0) { $(this).parent('table:first').addClass('responsive-hide'); } }); /** * Fieldsets with empty <span> */ container.find('fieldset dt > span:last-child').each(function() { var $this = $(this); if ($this.html() == ' ') { $this.addClass('responsive-hide'); } }); /** * Responsive tabs */ container.find('#tabs').not('[data-skip-responsive]').each(function() { var $this = $(this), $body = $('body'), ul = $this.children(), tabs = ul.children().not('[data-skip-responsive]'), links = tabs.children('a'), item = ul.append('<li class="tab responsive-tab" style="display:none;"><a href="javascript:void(0);" class="responsive-tab-link"> </a><div class="dropdown tab-dropdown" style="display: none;"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>').find('li.responsive-tab'), menu = item.find('.dropdown-contents'), maxHeight = 0, lastWidth = false, responsive = false; links.each(function() { var link = $(this); maxHeight = Math.max(maxHeight, Math.max(link.outerHeight(true), link.parent().outerHeight(true))); }) function check() { var width = $body.width(), height = $this.height(); if (arguments.length == 0 && (!responsive || width <= lastWidth) && height <= maxHeight) { return; } tabs.show(); item.hide(); lastWidth = width; height = $this.height(); if (height <= maxHeight) { responsive = false; if (item.hasClass('dropdown-visible')) { phpbb.toggleDropdown.call(item.find('a.responsive-tab-link').get(0)); } return; } responsive = true; item.show(); menu.html(''); var availableTabs = tabs.filter(':not(.activetab, .responsive-tab)'), total = availableTabs.length, i, tab; for (i = total - 1; i >= 0; i --) { tab = availableTabs.eq(i); menu.prepend(tab.clone(true).removeClass('tab')); tab.hide(); if ($this.height() <= maxHeight) { menu.find('a').click(function() { check(true); }); return; } } menu.find('a').click(function() { check(true); }); } phpbb.registerDropdown(item.find('a.responsive-tab-link'), item.find('.dropdown'), {visibleClass: 'activetab', verticalDirection: 'down'}); check(true); $(window).resize(check); }); } /** * Run onload functions */ (function($) { $(document).ready(function() { // Swap .nojs and .hasjs $('body.nojs').toggleClass('nojs hasjs'); // Focus forms $('form[data-focus]:first').each(function() { $('#' + this.getAttribute('data-focus')).focus(); }); parse_document($('body')); $('#questionnaire-form').css('display', 'none'); var $triggerConfiglist = $('#trigger-configlist'); $triggerConfiglist.on('click', function () { var $configlist = $('#configlist'); $configlist.closest('.send-stats-data-row').toggleClass('send-stats-data-hidden'); $configlist.closest('.send-stats-row').find('.send-stats-data-row:first-child').toggleClass('send-stats-data-only-row'); $(this).find('i').toggleClass('fa-angle-down fa-angle-up'); }); $('#configlist').closest('.send-stats-data-row').addClass('send-stats-data-hidden'); }); })(jQuery); adm/style/ajax.js 0100666 0000000 0000000 00000024470 13715656641 0014100 ustar 00Unknown Unknown /* global phpbb, statsData */ (function($) { // Avoid conflicts with other libraries 'use strict'; phpbb.prepareSendStats = function () { var $form = $('#acp_help_phpbb'); var $dark = $('#darkenwrapper'); var $loadingIndicator; $form.on('submit', function (event) { var $this = $(this), currentTime = Math.floor(new Date().getTime() / 1000), statsTime = parseInt($this.find('input[name=help_send_statistics_time]').val(), 10); event.preventDefault(); $this.unbind('submit'); // Skip ajax request if form is submitted too early or send stats // checkbox is not checked if (!$this.find('input[name=help_send_statistics]').is(':checked') || statsTime > currentTime) { $form.find('input[type=submit]').click(); setTimeout(function () { $form.find('input[type=submit]').click(); }, 300); return; } /** * Handler for AJAX errors */ function errorHandler(jqXHR, textStatus, errorThrown) { if (typeof console !== 'undefined' && console.log) { console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown); } phpbb.clearLoadingTimeout(); var errorText = ''; if (typeof errorThrown === 'string' && errorThrown.length > 0) { errorText = errorThrown; } else { errorText = $dark.attr('data-ajax-error-text-' + textStatus); if (typeof errorText !== 'string' || !errorText.length) { errorText = $dark.attr('data-ajax-error-text'); } } phpbb.alert($dark.attr('data-ajax-error-title'), errorText); } /** * This is a private function used to handle the callbacks, refreshes * and alert. It calls the callback, refreshes the page if necessary, and * displays an alert to the user and removes it after an amount of time. * * It cannot be called from outside this function, and is purely here to * avoid repetition of code. * * @param {object} res The object sent back by the server. */ function returnHandler(res) { phpbb.clearLoadingTimeout(); // If a confirmation is not required, display an alert and call the // callbacks. $dark.fadeOut(phpbb.alertTime); if ($loadingIndicator) { $loadingIndicator.fadeOut(phpbb.alertTime); } var $sendStatisticsSuccess = $('<input />', { type: 'hidden', name: 'send_statistics_response', value: JSON.stringify(res) }); $sendStatisticsSuccess.appendTo('p.submit-buttons'); // Finish actual form submission $form.find('input[type=submit]').click(); } $loadingIndicator = phpbb.loadingIndicator(); $.ajax({ url: $this.attr('data-ajax-action').replace('&', '&'), type: 'POST', data: statsData, success: returnHandler, error: errorHandler, cache: false }).always(function() { if ($loadingIndicator && $loadingIndicator.is(':visible')) { $loadingIndicator.fadeOut(phpbb.alertTime); } }); }); }; /** * The following callbacks are for reording items. row_down * is triggered when an item is moved down, and row_up is triggered when * an item is moved up. It moves the row up or down, and deactivates / * activates any up / down icons that require it (the ones at the top or bottom). */ phpbb.addAjaxCallback('row_down', function(res) { if (typeof res.success === 'undefined' || !res.success) { return; } var $firstTr = $(this).parents('tr'), $secondTr = $firstTr.next(); $firstTr.insertAfter($secondTr); }); phpbb.addAjaxCallback('row_up', function(res) { if (typeof res.success === 'undefined' || !res.success) { return; } var $secondTr = $(this).parents('tr'), $firstTr = $secondTr.prev(); $secondTr.insertBefore($firstTr); }); /** * This callback replaces activate links with deactivate links and vice versa. * It does this by replacing the text, and replacing all instances of "activate" * in the href with "deactivate", and vice versa. */ phpbb.addAjaxCallback('activate_deactivate', function(res) { var $this = $(this), newHref = $this.attr('href'); $this.text(res.text); if (newHref.indexOf('deactivate') !== -1) { newHref = newHref.replace('deactivate', 'activate'); } else { newHref = newHref.replace('activate', 'deactivate'); } $this.attr('href', newHref); }); /** * The removes the parent row of the link or form that triggered the callback, * and is good for stuff like the removal of forums. */ phpbb.addAjaxCallback('row_delete', function(res) { if (res.SUCCESS !== false) { $(this).parents('tr').remove(); } }); /** * Handler for submitting permissions form in chunks * This call will submit permissions forms in chunks of 5 fieldsets. */ function submitPermissions() { var $form = $('form#set-permissions'), fieldsetList = $form.find('fieldset[id^=perm]'), formDataSets = [], dataSetIndex = 0, $submitAllButton = $form.find('input[type=submit][name^=action]')[0], $submitButton = $form.find('input[type=submit][data-clicked=true]')[0]; // Set proper start values for handling refresh of page var permissionSubmitSize = 0, permissionRequestCount = 0, forumIds = [], permissionSubmitFailed = false, clearIndicator = true, $loadingIndicator; if ($submitAllButton !== $submitButton) { fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id); } $.each(fieldsetList, function (key, value) { dataSetIndex = Math.floor(key / 5); var $fieldset = $('fieldset#' + value.id); if (key % 5 === 0) { formDataSets[dataSetIndex] = $fieldset.find('select:visible, input:not([data-name])').serialize(); } else { formDataSets[dataSetIndex] += '&' + $fieldset.find('select:visible, input:not([data-name])').serialize(); } // Find proper role value var roleInput = $fieldset.find('input[name^=role][data-name]'); if (roleInput.val()) { formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' + roleInput.val(); } else { formDataSets[dataSetIndex] += '&' + roleInput.attr('name') + '=' + $fieldset.find('select[name="' + roleInput.attr('name') + '"]').val(); } }); permissionSubmitSize = formDataSets.length; // Add each forum ID to forum ID list to preserve selected forums $.each($form.find('input[type=hidden][name^=forum_id]'), function (key, value) { if (value.name.match(/^forum_id\[([0-9]+)\]$/)) { forumIds.push(value.value); } }); $loadingIndicator = phpbb.loadingIndicator(); /** * Handler for submitted permissions form chunk * * @param {object} res Object returned by AJAX call */ function handlePermissionReturn(res) { permissionRequestCount++; var $dark = $('#darkenwrapper'); if (res.S_USER_WARNING) { phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); permissionSubmitFailed = true; } else if (!permissionSubmitFailed && res.S_USER_NOTICE) { // Display success message at the end of submitting the form if (permissionRequestCount >= permissionSubmitSize) { clearIndicator = true; var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); var $alertBoxLink = $alert.find('p.alert_text > a'); // Create form to submit instead of normal "Back to previous page" link if ($alertBoxLink) { // Remove forum_id[] from URL $alertBoxLink.attr('href', $alertBoxLink.attr('href').replace(/(&forum_id\[\]=[0-9]+)/g, '')); var previousPageForm = '<form action="' + $alertBoxLink.attr('href') + '" method="post">'; $.each(forumIds, function (key, value) { previousPageForm += '<input type="text" name="forum_id[]" value="' + value + '" />'; }); previousPageForm += '</form>'; $alertBoxLink.on('click', function (e) { var $previousPageForm = $(previousPageForm); $('body').append($previousPageForm); e.preventDefault(); $previousPageForm.submit(); }); } // Do not allow closing alert $dark.off('click'); $alert.find('.alert_close').hide(); if (typeof res.REFRESH_DATA !== 'undefined') { setTimeout(function () { // Create forum to submit using POST. This will prevent // exceeding the maximum length of URLs var form = '<form action="' + res.REFRESH_DATA.url.replace(/(&forum_id\[\]=[0-9]+)/g, '') + '" method="post">'; $.each(forumIds, function (key, value) { form += '<input type="text" name="forum_id[]" value="' + value + '" />'; }); form += '</form>'; $form = $(form); $('body').append($form); // Hide the alert even if we refresh the page, in case the user // presses the back button. $dark.fadeOut(phpbb.alertTime, function () { if (typeof $alert !== 'undefined') { $alert.hide(); } }); // Submit form $form.submit(); }, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds } } else { // Still more forms to submit, so do not clear indicator clearIndicator = false; } } if (clearIndicator) { phpbb.clearLoadingTimeout(); if ($loadingIndicator) { $loadingIndicator.fadeOut(phpbb.alertTime); } } } // Create AJAX request for each form data set $.each(formDataSets, function (key, formData) { $.ajax({ url: $form.action, type: 'POST', data: formData + '&' + $submitButton.name + '=' + encodeURIComponent($submitButton.value) + '&creation_time=' + $form.find('input[type=hidden][name=creation_time]')[0].value + '&form_token=' + $form.find('input[type=hidden][name=form_token]')[0].value + '&' + $form.children('input[type=hidden]').serialize() + '&' + $form.find('input[type=checkbox][name^=inherit]').serialize(), success: handlePermissionReturn, error: handlePermissionReturn }); }); } $('[data-ajax]').each(function() { var $this = $(this), ajax = $this.attr('data-ajax'); if (ajax !== 'false') { var fn = (ajax !== 'true') ? ajax : null; phpbb.ajaxify({ selector: this, refresh: $this.attr('data-refresh') !== undefined, callback: fn }); } }); /** * Automatically resize textarea */ $(function() { phpbb.resizeTextArea($('textarea:not(.no-auto-resize)'), {minHeight: 75}); var $setPermissionsForm = $('form#set-permissions'); if ($setPermissionsForm.length) { $setPermissionsForm.on('submit', function (e) { submitPermissions(); e.preventDefault(); }); $setPermissionsForm.find('input[type=submit]').click(function() { $('input[type=submit]', $(this).parents($('form#set-permissions'))).removeAttr('data-clicked'); $(this).attr('data-clicked', true); }); } if ($('#acp_help_phpbb')) { phpbb.prepareSendStats(); } }); })(jQuery); // Avoid conflicts with other libraries adm/style/installer_footer.html 0100666 0000000 0000000 00000001300 13715656642 0017044 ustar 00Unknown Unknown </div> </div><!-- /#main --> </div> </div><!-- /#acp --> </div> <div id="page-footer"> <div class="copyright"> {% if S_COPYRIGHT_HTML %} {{ CREDIT_LINE }} {% endif %} </div> </div> </div> <script> <!-- installLang = { title: '{LA_TIMEOUT_DETECTED_TITLE}', msg: '{LA_TIMEOUT_DETECTED_MESSAGE}' }; //--> </script> <script src="{T_JQUERY_LINK}"></script> <!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.5.1.min.js">\x3C/script>');</script><!-- ENDIF --> <script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script> <!-- INCLUDEJS admin.js --> {$SCRIPTS} </body> </html> adm/style/overall_footer.html 0100666 0000000 0000000 00000003120 13715656642 0016515 ustar 00Unknown Unknown </div> </div><!-- /#main --> </div> </div><!-- /#acp --> </div> <div id="page-footer"> <div class="copyright"> <!-- IF S_COPYRIGHT_HTML --> {CREDIT_LINE} <!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF --> <!-- ENDIF --> <!-- IF DEBUG_OUTPUT --> <!-- IF S_COPYRIGHT_HTML --><br /><!-- ENDIF --> {DEBUG_OUTPUT} <!-- ENDIF --> </div> <div id="darkenwrapper" data-ajax-error-title="{L_AJAX_ERROR_TITLE}" data-ajax-error-text="{L_AJAX_ERROR_TEXT}" data-ajax-error-text-abort="{L_AJAX_ERROR_TEXT_ABORT}" data-ajax-error-text-timeout="{L_AJAX_ERROR_TEXT_TIMEOUT}" data-ajax-error-text-parsererror="{L_AJAX_ERROR_TEXT_PARSERERROR}"> <div id="darken"> </div> </div> <div id="loading_indicator"></div> <div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}"> <a href="#" class="alert_close"></a> <h3 class="alert_title"></h3><p class="alert_text"></p> </div> <div id="phpbb_confirm" class="phpbb_alert"> <a href="#" class="alert_close"></a> <div class="alert_text"></div> </div> </div> </div> <script src="{T_JQUERY_LINK}"></script> <!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.5.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF --> <script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script> <!-- INCLUDEJS ajax.js --> <!-- INCLUDEJS admin.js --> <!-- EVENT acp_overall_footer_after --> {$SCRIPTS} </body> </html> adm/style/permissions.js 0100666 0000000 0000000 00000021637 13715656642 0015533 ustar 00Unknown Unknown /** * Hide and show all checkboxes * status = true (show boxes), false (hide boxes) */ function display_checkboxes(status) { var form = document.getElementById('set-permissions'); var cb = document.getElementsByTagName('input'); var display; //show if (status) { display = 'inline'; } //hide else { display = 'none'; } for (var i = 0; i < cb.length; i++ ) { if (cb[i].className === 'permissions-checkbox') { cb[i].style.display = display; } } } /** * Change opacity of element * e = element * value = 0 (hidden) till 10 (fully visible) */ function set_opacity(e, value) { e.style.opacity = value/10; //IE opacity currently turned off, because of its astronomical stupidity //e.style.filter = 'alpha(opacity=' + value*10 + ')'; } /** * Reset the opacity and checkboxes * block_id = id of the element that needs to be toggled */ function toggle_opacity(block_id) { var cb = document.getElementById('checkbox' + block_id); var fs = document.getElementById('perm' + block_id); if (cb.checked) { set_opacity(fs, 5); } else { set_opacity(fs, 10); } } /** * Reset the opacity and checkboxes * value = 0 (checked) and 1 (unchecked) * except_id = id of the element not to hide */ function reset_opacity(status, except_id) { var perm = document.getElementById('set-permissions'); var fs = perm.getElementsByTagName('fieldset'); var opacity = 5; if (status) { opacity = 10; } for (var i = 0; i < fs.length; i++ ) { if (fs[i].className !== 'quick') { set_opacity(fs[i], opacity); } } if (typeof(except_id) !== 'undefined') { set_opacity(document.getElementById('perm' + except_id), 10); } //reset checkboxes too marklist('set-permissions', 'inherit', !status); } /** * Check whether we have a full radiobutton row of true * index = offset for the row of inputs (0 == first row, 1 == second, 2 == third), * rb = array of radiobuttons */ function get_radio_status(index, rb) { for (var i = index; i < rb.length; i = i + 3 ) { if (rb[i].checked !== true) { if (i > index) { //at least one is true, but not all (custom) return 2; } //first one is not true return 0; } } // all radiobuttons true return 1; } /** * Set tab colours * id = panel the tab needs to be set for, * init = initialising on open, * quick = If no calculation needed, this contains the colour */ function set_colours(id, init, quick) { var table = document.getElementById('table' + id); var tab = document.getElementById('tab' + id); if (typeof(quick) !== 'undefined') { tab.className = 'permissions-preset-' + quick + ' activetab'; return; } var rb = table.getElementsByTagName('input'); var colour = 'custom'; var status = get_radio_status(0, rb); if (status === 1) { colour = 'yes'; } else if (status === 0) { // We move on to No status = get_radio_status(1, rb); if (status === 1) { colour = 'no'; } else if (status === 0) { // We move on to Never status = get_radio_status(2, rb); if (status === 1) { colour = 'never'; } } } if (init) { tab.className = 'permissions-preset-' + colour; } else { tab.className = 'permissions-preset-' + colour + ' activetab'; } } /** * Initialise advanced tab colours on first load * block_id = block that is opened */ function init_colours(block_id) { var block = document.getElementById('advanced' + block_id); var panels = block.getElementsByTagName('div'); var tab = document.getElementById('tab' + id); for (var i = 0; i < panels.length; i++) { if (panels[i].className === 'permissions-panel') { set_colours(panels[i].id.replace(/options/, ''), true); } } tab.className = tab.className + ' activetab'; } /** * Show/hide option panels * value = suffix for ID to show * adv = we are opening advanced permissions * view = called from view permissions */ function swap_options(pmask, fmask, cat, adv, view) { id = pmask + fmask + cat; active_option = active_pmask + active_fmask + active_cat; var old_tab = document.getElementById('tab' + active_option); var new_tab = document.getElementById('tab' + id); var adv_block = document.getElementById('advanced' + pmask + fmask); if (adv_block.style.display === 'block' && adv === true) { phpbb.toggleDisplay('advanced' + pmask + fmask, -1); reset_opacity(1); display_checkboxes(false); return; } // no need to set anything if we are clicking on the same tab again if (new_tab === old_tab && !adv) { return; } // init colours if (adv && (pmask + fmask) !== (active_pmask + active_fmask)) { init_colours(pmask + fmask); display_checkboxes(true); reset_opacity(1); } else if (adv) { //Checkbox might have been clicked, but we need full visibility display_checkboxes(true); reset_opacity(1); } // set active tab old_tab.className = old_tab.className.replace(/\ activetab/g, ''); new_tab.className = new_tab.className + ' activetab'; if (id === active_option && adv !== true) { return; } phpbb.toggleDisplay('options' + active_option, -1); //hiding and showing the checkbox if (document.getElementById('checkbox' + active_pmask + active_fmask)) { phpbb.toggleDisplay('checkbox' + pmask + fmask, -1); if ((pmask + fmask) !== (active_pmask + active_fmask)) { document.getElementById('checkbox' + active_pmask + active_fmask).style.display = 'inline'; } } if (!view) { phpbb.toggleDisplay('advanced' + active_pmask + active_fmask, -1); } if (!view) { phpbb.toggleDisplay('advanced' + pmask + fmask, 1); } phpbb.toggleDisplay('options' + id, 1); active_pmask = pmask; active_fmask = fmask; active_cat = cat; } /** * Mark all radio buttons in one panel * id = table ID container, s = status ['y'/'u'/'n'] */ function mark_options(id, s) { var t = document.getElementById(id); if (!t) { return; } var rb = t.getElementsByTagName('input'); for (var r = 0; r < rb.length; r++) { if (rb[r].id.substr(rb[r].id.length-1) === s) { rb[r].checked = true; } } } function mark_one_option(id, field_name, s) { var t = document.getElementById(id); if (!t) { return; } var rb = t.getElementsByTagName('input'); for (var r = 0; r < rb.length; r++) { if (rb[r].id.substr(rb[r].id.length-field_name.length-3, field_name.length) === field_name && rb[r].id.substr(rb[r].id.length-1) === s) { rb[r].checked = true; } } } /** * (Re)set the permission role dropdown. * * Try and match the set permissions to an existing role. * Otherwise reset the dropdown to "Select a role.." * * @param {string} id The fieldset identifier * @returns {void} */ function reset_role(id) { var t = document.getElementById(id); if (!t) { return; } // Before resetting the role dropdown, try and match any permission role var parent = t.parentNode, roleId = match_role_settings(id.replace('role', 'perm')), text = no_role_assigned, index = 0; // If a role permissions was matched, grab that option's value and index if (roleId) { for (var i = 0; i < t.options.length; i++) { if (parseInt(t.options[i].value, 10) === roleId) { text = t.options[i].text; index = i; break; } } } // Update the select's value and selected index t.value = roleId; t.options[index].selected = true; // Update the dropdown trigger to show the new value parent.querySelector('span.dropdown-trigger').innerText = text; parent.querySelector('input[data-name^=role]').value = roleId; } /** * Load role and set options accordingly */ function set_role_settings(role_id, target_id) { var settings = role_options[role_id]; if (!settings) { return; } // Mark all options to no (unset) first... mark_options(target_id, 'u'); for (var r in settings) { mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n'); } } /** * Match the set permissions against the available roles. * * @param {string} id The parent fieldset identifier * @return {number} The permission role identifier */ function match_role_settings(id) { var fieldset = document.getElementById(id), radios = fieldset.getElementsByTagName('input'), set = {}; // Iterate over all the radio buttons for (var i = 0; i < radios.length; i++) { var matches = radios[i].id.match(/setting\[\d+]\[\d+]\[([a-z_]+)]/); // Make sure the name attribute matches, the radio is checked and it is not the "No" (-1) value. if (matches !== null && radios[i].checked && radios[i].value !== '-1') { set[matches[1]] = parseInt(radios[i].value, 10); } } // Sort and stringify the 'set permissions' object set = sort_and_stringify(set); // Iterate over the available role options and return the first match for (var r in role_options) { if (sort_and_stringify(role_options[r]) === set) { return parseInt(r, 10); } } return 0; } /** * Sort and stringify an Object so it can be easily compared against another object. * * @param {object} obj The object to sort (by key) and stringify * @return {string} The sorted object as a string */ function sort_and_stringify(obj) { return JSON.stringify(Object.keys(obj).sort().reduce(function (result, key) { result[key] = obj[key]; return result; }, {})); } adm/style/simple_footer.html 0100666 0000000 0000000 00000001505 13715656642 0016347 ustar 00Unknown Unknown <div style="text-align: {S_CONTENT_FLOW_END};"><a href="#" onclick="self.close(); return false;">{L_CLOSE_WINDOW}</a></div> <br /><br /> </div> <div id="page-footer"> <!-- IF S_COPYRIGHT_HTML --> <br />{CREDIT_LINE} <!-- IF TRANSLATION_INFO --><br />{TRANSLATION_INFO}<!-- ENDIF --> <!-- ENDIF --> <!-- IF DEBUG_OUTPUT --> <!-- IF S_COPYRIGHT_HTML --><br /><br /><!-- ENDIF --> {DEBUG_OUTPUT} <!-- ENDIF --> </div> <script src="{T_JQUERY_LINK}"></script> <!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.5.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF --> <script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script> <!-- EVENT acp_simple_footer_after --> {$SCRIPTS} </body> </html> adm/style/tooltip.js 0100666 0000000 0000000 00000012316 13715656642 0014644 ustar 00Unknown Unknown /* javascript for Bubble Tooltips by Alessandro Fulciniti - http://pro.html.it - http://web-graphics.com obtained from: http://web-graphics.com/mtarchive/001717.php phpBB Development Team: - modified to adhere to our coding guidelines - integration into our design - added ability to perform tooltips on select elements - further adjustements */ (function($) { // Avoid conflicts with other libraries 'use strict'; var tooltips = []; /** * Enable tooltip replacements for selects * @param {string} id ID tag of select * @param {string} headline Text that should appear on top of tooltip * @param {string} [subId] Sub ID that should only be using tooltips (optional) */ phpbb.enableTooltipsSelect = function (id, headline, subId) { var $links, hold; hold = $('<span />', { id: '_tooltip_container', css: { position: 'absolute' } }); $('body').append(hold); if (!id) { $links = $('.roles-options li'); } else { $links = $('.roles-options li', '#' + id); } $links.each(function () { var $this = $(this); if (subId) { if ($this.parent().attr('id').substr(0, subId.length) === subId) { phpbb.prepareTooltips($this, headline); } } else { phpbb.prepareTooltips($this, headline); } }); }; /** * Prepare elements to replace * * @param {jQuery} $element Element to prepare for tooltips * @param {string} headText Text heading to display */ phpbb.prepareTooltips = function ($element, headText) { var $tooltip, text, $desc, $title; text = $element.attr('data-title'); if (text === null || text.length === 0) { return; } $title = $('<span />', { class: 'top', css: { display: 'block' } }) .append(document.createTextNode(headText)); $desc = $('<span />', { class: 'bottom', html: text, css: { display: 'block' } }); $tooltip = $('<span />', { class: 'tooltip', css: { display: 'block' } }) .append($title) .append($desc); tooltips[$element.attr('data-id')] = $tooltip; $element.on('mouseover', phpbb.showTooltip); $element.on('mouseout', phpbb.hideTooltip); }; /** * Show tooltip * * @param {object} $element Element passed by .on() */ phpbb.showTooltip = function ($element) { var $this = $($element.target); $('#_tooltip_container').append(tooltips[$this.attr('data-id')]); phpbb.positionTooltip($this); }; /** * Hide tooltip */ phpbb.hideTooltip = function () { var d = document.getElementById('_tooltip_container'); if (d.childNodes.length > 0) { d.removeChild(d.firstChild); } }; /** * Correct positioning of tooltip container * * @param {jQuery} $element Tooltip element that should be positioned */ phpbb.positionTooltip = function ($element) { var offset; $element = $element.parent(); offset = $element.offset(); if ($('body').hasClass('rtl')) { $('#_tooltip_container').css({ top: offset.top + 30, left: offset.left + 255 }); } else { $('#_tooltip_container').css({ top: offset.top + 30, left: offset.left - 205 }); } }; /** * Prepare roles drop down select */ phpbb.prepareRolesDropdown = function () { var $options = $('.roles-options li'); // Display span and hide select $('.roles-options > span').css('display', 'block'); $('.roles-options > select').hide(); $('.roles-options > input[type=hidden]').each(function () { var $this = $(this); if ($this.attr('data-name') && !$this.attr('name')) { $this.attr('name', $this.attr('data-name')); } }); // Prepare highlighting of select options and settings update $options.each(function () { var $this = $(this); var $rolesOptions = $this.closest('.roles-options'); var $span = $rolesOptions.children('span'); // Correctly show selected option if (typeof $this.attr('data-selected') !== 'undefined') { $rolesOptions .children('span') .text($this.text()) .attr('data-default', $this.text()) .attr('data-default-val', $this.attr('data-id')); // Save default text of drop down if there is no default set yet if (typeof $span.attr('data-default') === 'undefined') { $span.attr('data-default', $span.text()); } // Prepare resetting drop down on form reset $this.closest('form').on('reset', function () { $span.text($span.attr('data-default')); $rolesOptions.children('input[type=hidden]') .val($span.attr('data-default-val')); }); } $this.on('mouseover', function () { var $this = $(this); $options.removeClass('roles-highlight'); $this.addClass('roles-highlight'); }).on('click', function () { var $this = $(this); var $rolesOptions = $this.closest('.roles-options'); // Update settings set_role_settings($this.attr('data-id'), $this.attr('data-target-id')); init_colours($this.attr('data-target-id').replace('advanced', '')); // Set selected setting $rolesOptions.children('span') .text($this.text()); $rolesOptions.children('input[type=hidden]') .val($this.attr('data-id')); // Trigger hiding of selection options $('body').trigger('click'); }); }); }; // Run onload functions for RolesDropdown and tooltips $(function() { // Enable tooltips phpbb.enableTooltipsSelect('set-permissions', $('#set-permissions').attr('data-role-description'), 'role'); // Prepare dropdown phpbb.prepareRolesDropdown(); }); })(jQuery); // Avoid conflicts with other libraries assets/javascript/core.js 0100666 0000000 0000000 00000142236 13715656642 0015656 ustar 00Unknown Unknown /* global bbfontstyle */ var phpbb = {}; phpbb.alertTime = 100; (function($) { // Avoid conflicts with other libraries 'use strict'; // define a couple constants for keydown functions. var keymap = { TAB: 9, ENTER: 13, ESC: 27, ARROW_UP: 38, ARROW_DOWN: 40 }; var $dark = $('#darkenwrapper'); var $loadingIndicator; var phpbbAlertTimer = null; phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); // Add ajax pre-filter to prevent cross-domain script execution $.ajaxPrefilter(function(s) { if (s.crossDomain) { s.contents.script = false; } }); /** * Display a loading screen * * @returns {object} Returns loadingIndicator. */ phpbb.loadingIndicator = function() { if (!$loadingIndicator) { $loadingIndicator = $('<div />', { 'id': 'loading_indicator', 'class': 'loading_indicator' }); $loadingIndicator.appendTo('#page-footer'); } if (!$loadingIndicator.is(':visible')) { $loadingIndicator.fadeIn(phpbb.alertTime); // Wait 60 seconds and display an error if nothing has been returned by then. phpbb.clearLoadingTimeout(); phpbbAlertTimer = setTimeout(function() { phpbb.showTimeoutMessage(); }, 60000); } return $loadingIndicator; }; /** * Show timeout message */ phpbb.showTimeoutMessage = function () { var $alert = $('#phpbb_alert'); if ($loadingIndicator.is(':visible')) { phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req')); } }; /** * Clear loading alert timeout */ phpbb.clearLoadingTimeout = function() { if (phpbbAlertTimer !== null) { clearTimeout(phpbbAlertTimer); phpbbAlertTimer = null; } }; /** * Close popup alert after a specified delay * * @param {int} delay Delay in ms until darkenwrapper's click event is triggered */ phpbb.closeDarkenWrapper = function(delay) { phpbbAlertTimer = setTimeout(function() { $('#darkenwrapper').trigger('click'); }, delay); }; /** * Display a simple alert similar to JSs native alert(). * * You can only call one alert or confirm box at any one time. * * @param {string} title Title of the message, eg "Information" (HTML). * @param {string} msg Message to display (HTML). * * @returns {object} Returns the div created. */ phpbb.alert = function(title, msg) { var $alert = $('#phpbb_alert'); $alert.find('.alert_title').html(title); $alert.find('.alert_text').html(msg); $(document).on('keydown.phpbb.alert', function(e) { if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { phpbb.alert.close($alert, true); e.preventDefault(); e.stopPropagation(); } }); phpbb.alert.open($alert); return $alert; }; /** * Handler for opening an alert box. * * @param {jQuery} $alert jQuery object. */ phpbb.alert.open = function($alert) { if (!$dark.is(':visible')) { $dark.fadeIn(phpbb.alertTime); } if ($loadingIndicator && $loadingIndicator.is(':visible')) { $loadingIndicator.fadeOut(phpbb.alertTime, function() { $dark.append($alert); $alert.fadeIn(phpbb.alertTime); }); } else if ($dark.is(':visible')) { $dark.append($alert); $alert.fadeIn(phpbb.alertTime); } else { $dark.append($alert); $alert.show(); $dark.fadeIn(phpbb.alertTime); } $alert.on('click', function(e) { e.stopPropagation(); }); $dark.one('click', function(e) { phpbb.alert.close($alert, true); e.preventDefault(); e.stopPropagation(); }); $alert.find('.alert_close').one('click', function(e) { phpbb.alert.close($alert, true); e.preventDefault(); }); }; /** * Handler for closing an alert box. * * @param {jQuery} $alert jQuery object. * @param {bool} fadedark Whether to remove dark background. */ phpbb.alert.close = function($alert, fadedark) { var $fade = (fadedark) ? $dark : $alert; $fade.fadeOut(phpbb.alertTime, function() { $alert.hide(); }); $alert.find('.alert_close').off('click'); $(document).off('keydown.phpbb.alert'); }; /** * Display a simple yes / no box to the user. * * You can only call one alert or confirm box at any one time. * * @param {string} msg Message to display (HTML). * @param {function} callback Callback. Bool param, whether the user pressed * yes or no (or whatever their language is). * @param {bool} fadedark Remove the dark background when done? Defaults * to yes. * * @returns {object} Returns the div created. */ phpbb.confirm = function(msg, callback, fadedark) { var $confirmDiv = $('#phpbb_confirm'); $confirmDiv.find('.alert_text').html(msg); fadedark = typeof fadedark !== 'undefined' ? fadedark : true; $(document).on('keydown.phpbb.alert', function(e) { if (e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) { var name = (e.keyCode === keymap.ENTER) ? 'confirm' : 'cancel'; $('input[name="' + name + '"]').trigger('click'); e.preventDefault(); e.stopPropagation(); } }); $confirmDiv.find('input[type="button"]').one('click.phpbb.confirmbox', function(e) { var confirmed = this.name === 'confirm'; callback(confirmed); $confirmDiv.find('input[type="button"]').off('click.phpbb.confirmbox'); phpbb.alert.close($confirmDiv, fadedark || !confirmed); e.preventDefault(); e.stopPropagation(); }); phpbb.alert.open($confirmDiv); return $confirmDiv; }; /** * Turn a querystring into an array. * * @argument {string} string The querystring to parse. * @returns {object} The object created. */ phpbb.parseQuerystring = function(string) { var params = {}, i, split; string = string.split('&'); for (i = 0; i < string.length; i++) { split = string[i].split('='); params[split[0]] = decodeURIComponent(split[1]); } return params; }; /** * Makes a link use AJAX instead of loading an entire page. * * This function will work for links (both standard links and links which * invoke confirm_box) and forms. It will be called automatically for links * and forms with the data-ajax attribute set, and will call the necessary * callback. * * For more info, view the following page on the phpBB wiki: * http://wiki.phpbb.com/JavaScript_Function.phpbb.ajaxify * * @param {object} options Options. */ phpbb.ajaxify = function(options) { var $elements = $(options.selector), refresh = options.refresh, callback = options.callback, overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true, isForm = $elements.is('form'), isText = $elements.is('input[type="text"], textarea'), eventName; if (isForm) { eventName = 'submit'; } else if (isText) { eventName = 'keyup'; } else { eventName = 'click'; } $elements.on(eventName, function(event) { var action, method, data, submit, that = this, $this = $(this); if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false') { return; } /** * Handler for AJAX errors */ function errorHandler(jqXHR, textStatus, errorThrown) { if (typeof console !== 'undefined' && console.log) { console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown); } phpbb.clearLoadingTimeout(); var responseText, errorText = false; try { responseText = JSON.parse(jqXHR.responseText); responseText = responseText.message; } catch (e) {} if (typeof responseText === 'string' && responseText.length > 0) { errorText = responseText; } else if (typeof errorThrown === 'string' && errorThrown.length > 0) { errorText = errorThrown; } else { errorText = $dark.attr('data-ajax-error-text-' + textStatus); if (typeof errorText !== 'string' || !errorText.length) { errorText = $dark.attr('data-ajax-error-text'); } } phpbb.alert($dark.attr('data-ajax-error-title'), errorText); } /** * This is a private function used to handle the callbacks, refreshes * and alert. It calls the callback, refreshes the page if necessary, and * displays an alert to the user and removes it after an amount of time. * * It cannot be called from outside this function, and is purely here to * avoid repetition of code. * * @param {object} res The object sent back by the server. */ function returnHandler(res) { var alert; phpbb.clearLoadingTimeout(); // Is a confirmation required? if (typeof res.S_CONFIRM_ACTION === 'undefined') { // If a confirmation is not required, display an alert and call the // callbacks. if (typeof res.MESSAGE_TITLE !== 'undefined') { alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); } else { $dark.fadeOut(phpbb.alertTime); if ($loadingIndicator) { $loadingIndicator.fadeOut(phpbb.alertTime); } } if (typeof phpbb.ajaxCallbacks[callback] === 'function') { phpbb.ajaxCallbacks[callback].call(that, res); } // If the server says to refresh the page, check whether the page should // be refreshed and refresh page after specified time if required. if (res.REFRESH_DATA) { if (typeof refresh === 'function') { refresh = refresh(res.REFRESH_DATA.url); } else if (typeof refresh !== 'boolean') { refresh = false; } phpbbAlertTimer = setTimeout(function() { if (refresh) { window.location = res.REFRESH_DATA.url; } // Hide the alert even if we refresh the page, in case the user // presses the back button. $dark.fadeOut(phpbb.alertTime, function() { if (typeof alert !== 'undefined') { alert.hide(); } }); }, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds } } else { // If confirmation is required, display a dialog to the user. phpbb.confirm(res.MESSAGE_BODY, function(del) { if (!del) { return; } phpbb.loadingIndicator(); data = $('<form>' + res.S_HIDDEN_FIELDS + '</form>').serialize(); $.ajax({ url: res.S_CONFIRM_ACTION, type: 'POST', data: data + '&confirm=' + res.YES_VALUE + '&' + $('form', '#phpbb_confirm').serialize(), success: returnHandler, error: errorHandler }); }, false); } } // If the element is a form, POST must be used and some extra data must // be taken from the form. var runFilter = (typeof options.filter === 'function'); data = {}; if (isForm) { action = $this.attr('action').replace('&', '&'); data = $this.serializeArray(); method = $this.attr('method') || 'GET'; if ($this.find('input[type="submit"][data-clicked]')) { submit = $this.find('input[type="submit"][data-clicked]'); data.push({ name: submit.attr('name'), value: submit.val() }); } } else if (isText) { var name = $this.attr('data-name') || this.name; action = $this.attr('data-url').replace('&', '&'); data[name] = this.value; method = 'POST'; } else { action = this.href; data = null; method = 'GET'; } var sendRequest = function() { var dataOverlay = $this.attr('data-overlay'); if (overlay && (typeof dataOverlay === 'undefined' || dataOverlay === 'true')) { phpbb.loadingIndicator(); } var request = $.ajax({ url: action, type: method, data: data, success: returnHandler, error: errorHandler, cache: false }); request.always(function() { if ($loadingIndicator && $loadingIndicator.is(':visible')) { $loadingIndicator.fadeOut(phpbb.alertTime); } }); }; // If filter function returns false, cancel the AJAX functionality, // and return true (meaning that the HTTP request will be sent normally). if (runFilter && !options.filter.call(this, data, event, sendRequest)) { return; } sendRequest(); event.preventDefault(); }); if (isForm) { $elements.find('input:submit').click(function () { var $this = $(this); // Remove data-clicked attribute from any submit button of form $this.parents('form:first').find('input:submit[data-clicked]').removeAttr('data-clicked'); $this.attr('data-clicked', 'true'); }); } return this; }; phpbb.search = { cache: { data: [] }, tpl: [], container: [] }; /** * Get cached search data. * * @param {string} id Search ID. * @returns {bool|object} Cached data object. Returns false if no data exists. */ phpbb.search.cache.get = function(id) { if (this.data[id]) { return this.data[id]; } return false; }; /** * Set search cache data value. * * @param {string} id Search ID. * @param {string} key Data key. * @param {string} value Data value. */ phpbb.search.cache.set = function(id, key, value) { if (!this.data[id]) { this.data[id] = { results: [] }; } this.data[id][key] = value; }; /** * Cache search result. * * @param {string} id Search ID. * @param {string} keyword Keyword. * @param {Array} results Search results. */ phpbb.search.cache.setResults = function(id, keyword, results) { this.data[id].results[keyword] = results; }; /** * Trim spaces from keyword and lower its case. * * @param {string} keyword Search keyword to clean. * @returns {string} Cleaned string. */ phpbb.search.cleanKeyword = function(keyword) { return $.trim(keyword).toLowerCase(); }; /** * Get clean version of search keyword. If textarea supports several keywords * (one per line), it fetches the current keyword based on the caret position. * * @param {jQuery} $input Search input|textarea. * @param {string} keyword Input|textarea value. * @param {bool} multiline Whether textarea supports multiple search keywords. * * @returns string Clean string. */ phpbb.search.getKeyword = function($input, keyword, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine($input); keyword = keyword.split('\n').splice(line, 1); } return phpbb.search.cleanKeyword(keyword); }; /** * Get the textarea line number on which the keyword resides - for textareas * that support multiple keywords (one per line). * * @param {jQuery} $textarea Search textarea. * @returns {int} The line number. */ phpbb.search.getKeywordLine = function ($textarea) { var selectionStart = $textarea.get(0).selectionStart; return $textarea.val().substr(0, selectionStart).split('\n').length - 1; }; /** * Set the value on the input|textarea. If textarea supports multiple * keywords, only the active keyword is replaced. * * @param {jQuery} $input Search input|textarea. * @param {string} value Value to set. * @param {bool} multiline Whether textarea supports multiple search keywords. */ phpbb.search.setValue = function($input, value, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine($input), lines = $input.val().split('\n'); lines[line] = value; value = lines.join('\n'); } $input.val(value); }; /** * Sets the onclick event to set the value on the input|textarea to the * selected search result. * * @param {jQuery} $input Search input|textarea. * @param {object} value Result object. * @param {jQuery} $row Result element. * @param {jQuery} $container jQuery object for the search container. */ phpbb.search.setValueOnClick = function($input, value, $row, $container) { $row.click(function() { phpbb.search.setValue($input, value.result, $input.attr('data-multiline')); phpbb.search.closeResults($input, $container); }); }; /** * Runs before the AJAX search request is sent and determines whether * there is a need to contact the server. If there are cached results * already, those are displayed instead. Executes the AJAX request function * itself due to the need to use a timeout to limit the number of requests. * * @param {Array} data Data to be sent to the server. * @param {object} event Onkeyup event object. * @param {function} sendRequest Function to execute AJAX request. * * @returns {boolean} Returns false. */ phpbb.search.filter = function(data, event, sendRequest) { var $this = $(this), dataName = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : $this.attr('name'), minLength = parseInt($this.attr('data-min-length'), 10), searchID = $this.attr('data-results'), keyword = phpbb.search.getKeyword($this, data[dataName], $this.attr('data-multiline')), cache = phpbb.search.cache.get(searchID), key = event.keyCode || event.which, proceed = true; data[dataName] = keyword; // No need to search if enter was pressed // for selecting a value from the results. if (key === keymap.ENTER) { return false; } if (cache.timeout) { clearTimeout(cache.timeout); } var timeout = setTimeout(function() { // Check min length and existence of cache. if (minLength > keyword.length) { proceed = false; } else if (cache.lastSearch) { // Has the keyword actually changed? if (cache.lastSearch === keyword) { proceed = false; } else { // Do we already have results for this? if (cache.results[keyword]) { var response = { keyword: keyword, results: cache.results[keyword] }; phpbb.search.handleResponse(response, $this, true); proceed = false; } // If the previous search didn't yield results and the string only had characters added to it, // then we won't bother sending a request. if (keyword.indexOf(cache.lastSearch) === 0 && cache.results[cache.lastSearch].length === 0) { phpbb.search.cache.set(searchID, 'lastSearch', keyword); phpbb.search.cache.setResults(searchID, keyword, []); proceed = false; } } } if (proceed) { sendRequest.call(this); } }, 350); phpbb.search.cache.set(searchID, 'timeout', timeout); return false; }; /** * Handle search result response. * * @param {object} res Data received from server. * @param {jQuery} $input Search input|textarea. * @param {bool} fromCache Whether the results are from the cache. * @param {function} callback Optional callback to run when assigning each search result. */ phpbb.search.handleResponse = function(res, $input, fromCache, callback) { if (typeof res !== 'object') { return; } var searchID = $input.attr('data-results'), $container = $(searchID); if (this.cache.get(searchID).callback) { callback = this.cache.get(searchID).callback; } else if (typeof callback === 'function') { this.cache.set(searchID, 'callback', callback); } if (!fromCache) { this.cache.setResults(searchID, res.keyword, res.results); } this.cache.set(searchID, 'lastSearch', res.keyword); this.showResults(res.results, $input, $container, callback); }; /** * Show search results. * * @param {Array} results Search results. * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container element. * @param {function} callback Optional callback to run when assigning each search result. */ phpbb.search.showResults = function(results, $input, $container, callback) { var $resultContainer = $('.search-results', $container); this.clearResults($resultContainer); if (!results.length) { $container.hide(); return; } var searchID = $container.attr('id'), tpl, row; if (!this.tpl[searchID]) { tpl = $('.search-result-tpl', $container); this.tpl[searchID] = tpl.clone().removeClass('search-result-tpl'); tpl.remove(); } tpl = this.tpl[searchID]; $.each(results, function(i, item) { row = tpl.clone(); row.find('.search-result').html(item.display); if (typeof callback === 'function') { callback.call(this, $input, item, row, $container); } row.appendTo($resultContainer).show(); }); $container.show(); phpbb.search.navigateResults($input, $container, $resultContainer); }; /** * Clear search results. * * @param {jQuery} $container Search results container. */ phpbb.search.clearResults = function($container) { $container.children(':not(.search-result-tpl)').remove(); }; /** * Close search results. * * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container. */ phpbb.search.closeResults = function($input, $container) { $input.off('.phpbb.search'); $container.hide(); }; /** * Navigate search results. * * @param {jQuery} $input Search input|textarea. * @param {jQuery} $container Search results container. * @param {jQuery} $resultContainer Search results list container. */ phpbb.search.navigateResults = function($input, $container, $resultContainer) { // Add a namespace to the event (.phpbb.search), // so it can be unbound specifically later on. // Rebind it, to ensure the event is 'dynamic'. $input.off('.phpbb.search'); $input.on('keydown.phpbb.search', function(event) { var key = event.keyCode || event.which, $active = $resultContainer.children('.active'); switch (key) { // Close the results case keymap.ESC: phpbb.search.closeResults($input, $container); break; // Set the value for the selected result case keymap.ENTER: if ($active.length) { var value = $active.find('.search-result > span').text(); phpbb.search.setValue($input, value, $input.attr('data-multiline')); } phpbb.search.closeResults($input, $container); // Do not submit the form event.preventDefault(); break; // Navigate the results case keymap.ARROW_DOWN: case keymap.ARROW_UP: var up = key === keymap.ARROW_UP, $children = $resultContainer.children(); if (!$active.length) { if (up) { $children.last().addClass('active'); } else { $children.first().addClass('active'); } } else if ($children.length > 1) { if (up) { if ($active.is(':first-child')) { $children.last().addClass('active'); } else { $active.prev().addClass('active'); } } else { if ($active.is(':last-child')) { $children.first().addClass('active'); } else { $active.next().addClass('active'); } } $active.removeClass('active'); } // Do not change cursor position in the input element event.preventDefault(); break; } }); }; $('#phpbb').click(function() { var $this = $(this); if (!$this.is('.live-search') && !$this.parents().is('.live-search')) { phpbb.search.closeResults($('input, textarea'), $('.live-search')); } }); phpbb.history = {}; /** * Check whether a method in the native history object is supported. * * @param {string} fn Method name. * @returns {bool} Returns true if the method is supported. */ phpbb.history.isSupported = function(fn) { return !(typeof history === 'undefined' || typeof history[fn] === 'undefined'); }; /** * Wrapper for the pushState and replaceState methods of the * native history object. * * @param {string} mode Mode. Either push or replace. * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.alterUrl = function(mode, url, title, obj) { var fn = mode + 'State'; if (!url || !phpbb.history.isSupported(fn)) { return; } if (!title) { title = document.title; } if (!obj) { obj = null; } history[fn](obj, title, url); }; /** * Wrapper for the native history.replaceState method. * * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.replaceUrl = function(url, title, obj) { phpbb.history.alterUrl('replace', url, title, obj); }; /** * Wrapper for the native history.pushState method. * * @param {string} url New URL. * @param {string} [title] Optional page title. * @param {object} [obj] Optional state object. */ phpbb.history.pushUrl = function(url, title, obj) { phpbb.history.alterUrl('push', url, title, obj); }; /** * Hide the optgroups that are not the selected timezone * * @param {bool} keepSelection Shall we keep the value selected, or shall the * user be forced to repick one. */ phpbb.timezoneSwitchDate = function(keepSelection) { var $timezoneCopy = $('#timezone_copy'); var $timezone = $('#timezone'); var $tzDate = $('#tz_date'); var $tzSelectDateSuggest = $('#tz_select_date_suggest'); if ($timezoneCopy.length === 0) { // We make a backup of the original dropdown, so we can remove optgroups // instead of setting display to none, because IE and chrome will not // hide options inside of optgroups and selects via css $timezone.clone() .attr('id', 'timezone_copy') .css('display', 'none') .attr('name', 'tz_copy') .insertAfter('#timezone'); } else { // Copy the content of our backup, so we can remove all unneeded options $timezone.html($timezoneCopy.html()); } if ($tzDate.val() !== '') { $timezone.children('optgroup').remove(':not([data-tz-value="' + $tzDate.val() + '"])'); } if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) { $tzSelectDateSuggest.css('display', 'none'); } else { $tzSelectDateSuggest.css('display', 'inline'); } var $tzOptions = $timezone.children('optgroup[data-tz-value="' + $tzDate.val() + '"]').children('option'); if ($tzOptions.length === 1) { // If there is only one timezone for the selected date, we just select that automatically. $tzOptions.prop('selected', true); keepSelection = true; } if (typeof keepSelection !== 'undefined' && !keepSelection) { var $timezoneOptions = $timezone.find('optgroup option'); if ($timezoneOptions.filter(':selected').length <= 0) { $timezoneOptions.filter(':first').prop('selected', true); } } }; /** * Display the date/time select */ phpbb.timezoneEnableDateSelection = function() { $('#tz_select_date').css('display', 'block'); }; /** * Preselect a date/time or suggest one, if it is not picked. * * @param {bool} forceSelector Shall we select the suggestion? */ phpbb.timezonePreselectSelect = function(forceSelector) { // The offset returned here is in minutes and negated. var offset = (new Date()).getTimezoneOffset(); var sign = '-'; if (offset < 0) { sign = '+'; offset = -offset; } var minutes = offset % 60; var hours = (offset - minutes) / 60; if (hours === 0) { hours = '00'; sign = '+'; } else if (hours < 10) { hours = '0' + hours.toString(); } else { hours = hours.toString(); } if (minutes < 10) { minutes = '0' + minutes.toString(); } else { minutes = minutes.toString(); } var prefix = 'UTC' + sign + hours + ':' + minutes; var prefixLength = prefix.length; var selectorOptions = $('option', '#tz_date'); var i; var $tzSelectDateSuggest = $('#tz_select_date_suggest'); for (i = 0; i < selectorOptions.length; ++i) { var option = selectorOptions[i]; if (option.value.substring(0, prefixLength) === prefix) { if ($('#tz_date').val() !== option.value && !forceSelector) { // We do not select the option for the user, but notify him, // that we would suggest a different setting. phpbb.timezoneSwitchDate(true); $tzSelectDateSuggest.css('display', 'inline'); } else { option.selected = true; phpbb.timezoneSwitchDate(!forceSelector); $tzSelectDateSuggest.css('display', 'none'); } var suggestion = $tzSelectDateSuggest.attr('data-l-suggestion'); $tzSelectDateSuggest.attr('title', suggestion.replace('%s', option.innerHTML)); $tzSelectDateSuggest.attr('value', suggestion.replace('%s', option.innerHTML.substring(0, 9))); $tzSelectDateSuggest.attr('data-suggested-tz', option.innerHTML); // Found the suggestion, there cannot be more, so return from here. return; } } }; phpbb.ajaxCallbacks = {}; /** * Adds an AJAX callback to be used by phpbb.ajaxify. * * See the phpbb.ajaxify comments for information on stuff like parameters. * * @param {string} id The name of the callback. * @param {function} callback The callback to be called. */ phpbb.addAjaxCallback = function(id, callback) { if (typeof callback === 'function') { phpbb.ajaxCallbacks[id] = callback; } return this; }; /** * This callback handles live member searches. */ phpbb.addAjaxCallback('member_search', function(res) { phpbb.search.handleResponse(res, $(this), false, phpbb.getFunctionByName('phpbb.search.setValueOnClick')); }); /** * This callback alternates text - it replaces the current text with the text in * the alt-text data attribute, and replaces the text in the attribute with the * current text so that the process can be repeated. */ phpbb.addAjaxCallback('alt_text', function() { var $anchor, updateAll = $(this).data('update-all'), altText; if (updateAll !== undefined && updateAll.length) { $anchor = $(updateAll); } else { $anchor = $(this); } $anchor.each(function() { var $this = $(this); altText = $this.attr('data-alt-text'); $this.attr('data-alt-text', $.trim($this.text())); $this.attr('title', altText); $this.children('span').text(altText); }); }); /** * This callback is based on the alt_text callback. * * It replaces the current text with the text in the alt-text data attribute, * and replaces the text in the attribute with the current text so that the * process can be repeated. * Additionally it replaces the class of the link's parent * and changes the link itself. */ phpbb.addAjaxCallback('toggle_link', function() { var $anchor, updateAll = $(this).data('update-all') , toggleText, toggleUrl, toggleClass; if (updateAll !== undefined && updateAll.length) { $anchor = $(updateAll); } else { $anchor = $(this); } $anchor.each(function() { var $this = $(this); // Toggle link url toggleUrl = $this.attr('data-toggle-url'); $this.attr('data-toggle-url', $this.attr('href')); $this.attr('href', toggleUrl); // Toggle class of link parent toggleClass = $this.attr('data-toggle-class'); $this.attr('data-toggle-class', $this.children().attr('class')); $this.children('.icon').attr('class', toggleClass); // Toggle link text toggleText = $this.attr('data-toggle-text'); $this.attr('data-toggle-text', $this.children('span').text()); $this.attr('title', $.trim(toggleText)); $this.children('span').text(toggleText); }); }); /** * Automatically resize textarea * * This function automatically resizes textarea elements when user * types text. * * @param {jQuery} $items jQuery object(s) to resize * @param {object} [options] Optional parameter that adjusts default * configuration. See configuration variable * * Optional parameters: * minWindowHeight {number} Minimum browser window height when textareas are resized. Default = 500 * minHeight {number} Minimum height of textarea. Default = 200 * maxHeight {number} Maximum height of textarea. Default = 500 * heightDiff {number} Minimum difference between window and textarea height. Default = 200 * resizeCallback {function} Function to call after resizing textarea * resetCallback {function} Function to call when resize has been canceled * Callback function format: function(item) {} * this points to DOM object * item is a jQuery object, same as this */ phpbb.resizeTextArea = function($items, options) { // Configuration var configuration = { minWindowHeight: 500, minHeight: 200, maxHeight: 500, heightDiff: 200, resizeCallback: function() {}, resetCallback: function() {} }; if (phpbb.isTouch) { return; } if (arguments.length > 1) { configuration = $.extend(configuration, options); } function resetAutoResize(item) { var $item = $(item); if ($item.hasClass('auto-resized')) { $(item) .css({ height: '', resize: '' }) .removeClass('auto-resized'); configuration.resetCallback.call(item, $item); } } function autoResize(item) { function setHeight(height) { height += parseInt($item.css('height'), 10) - $item.innerHeight(); $item .css({ height: height + 'px', resize: 'none' }) .addClass('auto-resized'); configuration.resizeCallback.call(item, $item); } var windowHeight = $(window).height(); if (windowHeight < configuration.minWindowHeight) { resetAutoResize(item); return; } var maxHeight = Math.min( Math.max(windowHeight - configuration.heightDiff, configuration.minHeight), configuration.maxHeight ), $item = $(item), height = parseInt($item.innerHeight(), 10), scrollHeight = (item.scrollHeight) ? item.scrollHeight : 0; if (height < 0) { return; } if (height > maxHeight) { setHeight(maxHeight); } else if (scrollHeight > (height + 5)) { setHeight(Math.min(maxHeight, scrollHeight)); } } $items.on('focus change keyup', function() { $(this).each(function() { autoResize(this); }); }).change(); $(window).resize(function() { $items.each(function() { if ($(this).hasClass('auto-resized')) { autoResize(this); } }); }); }; /** * Check if cursor in textarea is currently inside a bbcode tag * * @param {object} textarea Textarea DOM object * @param {Array} startTags List of start tags to look for * For example, Array('[code]', '[code=') * @param {Array} endTags List of end tags to look for * For example, Array('[/code]') * * @returns {boolean} True if cursor is in bbcode tag */ phpbb.inBBCodeTag = function(textarea, startTags, endTags) { var start = textarea.selectionStart, lastEnd = -1, lastStart = -1, i, index, value; if (typeof start !== 'number') { return false; } value = textarea.value.toLowerCase(); for (i = 0; i < startTags.length; i++) { var tagLength = startTags[i].length; if (start >= tagLength) { index = value.lastIndexOf(startTags[i], start - tagLength); lastStart = Math.max(lastStart, index); } } if (lastStart === -1) { return false; } if (start > 0) { for (i = 0; i < endTags.length; i++) { index = value.lastIndexOf(endTags[i], start - 1); lastEnd = Math.max(lastEnd, index); } } return (lastEnd < lastStart); }; /** * Adjust textarea to manage code bbcode * * This function allows to use tab characters when typing code * and keeps indentation of previous line of code when adding new * line while typing code. * * Editor's functionality is changed only when cursor is between * [code] and [/code] bbcode tags. * * @param {object} textarea Textarea DOM object to apply editor to */ phpbb.applyCodeEditor = function(textarea) { // list of allowed start and end bbcode code tags, in lower case var startTags = ['[code]', '[code='], startTagsEnd = ']', endTags = ['[/code]']; if (!textarea || typeof textarea.selectionStart !== 'number') { return; } if ($(textarea).data('code-editor') === true) { return; } function inTag() { return phpbb.inBBCodeTag(textarea, startTags, endTags); } /** * Get line of text before cursor * * @param {boolean} stripCodeStart If true, only part of line * after [code] tag will be returned. * * @returns {string} Line of text */ function getLastLine(stripCodeStart) { var start = textarea.selectionStart, value = textarea.value, index = value.lastIndexOf('\n', start - 1); value = value.substring(index + 1, start); if (stripCodeStart) { for (var i = 0; i < startTags.length; i++) { index = value.lastIndexOf(startTags[i]); if (index >= 0) { var tagLength = startTags[i].length; value = value.substring(index + tagLength); if (startTags[i].lastIndexOf(startTagsEnd) !== tagLength) { index = value.indexOf(startTagsEnd); if (index >= 0) { value = value.substr(index + 1); } } } } } return value; } /** * Append text at cursor position * * @param {string} text Text to append */ function appendText(text) { var start = textarea.selectionStart, end = textarea.selectionEnd, value = textarea.value; textarea.value = value.substr(0, start) + text + value.substr(end); textarea.selectionStart = textarea.selectionEnd = start + text.length; } $(textarea).data('code-editor', true).on('keydown', function(event) { var key = event.keyCode || event.which; // intercept tabs if (key === keymap.TAB && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { if (inTag()) { appendText('\t'); event.preventDefault(); return; } } // intercept new line characters if (key === keymap.ENTER) { if (inTag()) { var lastLine = getLastLine(true), code = '' + /^\s*/g.exec(lastLine); if (code.length > 0) { appendText('\n' + code); event.preventDefault(); } } } }); }; /** * Show drag and drop animation when textarea is present * * This function will enable the drag and drop animation for a specified * textarea. * * @param {HTMLElement} textarea Textarea DOM object to apply editor to */ phpbb.showDragNDrop = function(textarea) { if (!textarea) { return; } $('body').on('dragenter dragover', function () { $(textarea).addClass('drag-n-drop'); }).on('dragleave dragout dragend drop', function() { $(textarea).removeClass('drag-n-drop'); }); $(textarea).on('dragenter dragover', function () { $(textarea).addClass('drag-n-drop-highlight'); }).on('dragleave dragout dragend drop', function() { $(textarea).removeClass('drag-n-drop-highlight'); }); }; /** * List of classes that toggle dropdown menu, * list of classes that contain visible dropdown menu * * Add your own classes to strings with comma (probably you * will never need to do that) */ phpbb.dropdownHandles = '.dropdown-container.dropdown-visible .dropdown-toggle'; phpbb.dropdownVisibleContainers = '.dropdown-container.dropdown-visible'; /** * Dropdown toggle event handler * This handler is used by phpBB.registerDropdown() and other functions */ phpbb.toggleDropdown = function() { var $this = $(this), options = $this.data('dropdown-options'), parent = options.parent, visible = parent.hasClass('dropdown-visible'), direction; if (!visible) { // Hide other dropdown menus $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); // Figure out direction of dropdown direction = options.direction; var verticalDirection = options.verticalDirection, offset = $this.offset(); if (direction === 'auto') { if (($(window).width() - $this.outerWidth(true)) / 2 > offset.left) { direction = 'right'; } else { direction = 'left'; } } parent.toggleClass(options.leftClass, direction === 'left') .toggleClass(options.rightClass, direction === 'right'); if (verticalDirection === 'auto') { var height = $(window).height(), top = offset.top - $(window).scrollTop(); verticalDirection = (top < height * 0.7) ? 'down' : 'up'; } parent.toggleClass(options.upClass, verticalDirection === 'up') .toggleClass(options.downClass, verticalDirection === 'down'); } options.dropdown.toggle(); parent.toggleClass(options.visibleClass, !visible) .toggleClass('dropdown-visible', !visible); // Check dimensions when showing dropdown // !visible because variable shows state of dropdown before it was toggled if (!visible) { var windowWidth = $(window).width(); options.dropdown.find('.dropdown-contents').each(function() { var $this = $(this); $this.css({ marginLeft: 0, left: 0, marginRight: 0, maxWidth: (windowWidth - 4) + 'px' }); var offset = $this.offset().left, width = $this.outerWidth(true); if (offset < 2) { $this.css('left', (2 - offset) + 'px'); } else if ((offset + width + 2) > windowWidth) { $this.css('margin-left', (windowWidth - offset - width - 2) + 'px'); } // Check whether the vertical scrollbar is present. $this.toggleClass('dropdown-nonscroll', this.scrollHeight === $this.innerHeight()); }); var freeSpace = parent.offset().left - 4; if (direction === 'left') { options.dropdown.css('margin-left', '-' + freeSpace + 'px'); // Try to position the notification dropdown correctly in RTL-responsive mode if (options.dropdown.hasClass('dropdown-extended')) { var contentWidth, fullFreeSpace = freeSpace + parent.outerWidth(); options.dropdown.find('.dropdown-contents').each(function() { contentWidth = parseInt($(this).outerWidth(), 10); $(this).css({ marginLeft: 0, left: 0 }); }); var maxOffset = Math.min(contentWidth, fullFreeSpace) + 'px'; options.dropdown.css({ width: maxOffset, marginLeft: -maxOffset }); } } else { options.dropdown.css('margin-right', '-' + (windowWidth + freeSpace) + 'px'); } } // Prevent event propagation if (arguments.length > 0) { try { var e = arguments[0]; e.preventDefault(); e.stopPropagation(); } catch (error) { } } return false; }; /** * Toggle dropdown submenu */ phpbb.toggleSubmenu = function(e) { $(this).siblings('.dropdown-submenu').toggle(); e.preventDefault(); }; /** * Register dropdown menu * Shows/hides dropdown, decides which side to open to * * @param {jQuery} toggle Link that toggles dropdown. * @param {jQuery} dropdown Dropdown menu. * @param {Object} options List of options. Optional. */ phpbb.registerDropdown = function(toggle, dropdown, options) { var ops = { parent: toggle.parent(), // Parent item to add classes to direction: 'auto', // Direction of dropdown menu. Possible values: auto, left, right verticalDirection: 'auto', // Vertical direction. Possible values: auto, up, down visibleClass: 'visible', // Class to add to parent item when dropdown is visible leftClass: 'dropdown-left', // Class to add to parent item when dropdown opens to left side rightClass: 'dropdown-right', // Class to add to parent item when dropdown opens to right side upClass: 'dropdown-up', // Class to add to parent item when dropdown opens above menu item downClass: 'dropdown-down' // Class to add to parent item when dropdown opens below menu item }; if (options) { ops = $.extend(ops, options); } ops.dropdown = dropdown; ops.parent.addClass('dropdown-container'); toggle.addClass('dropdown-toggle'); toggle.data('dropdown-options', ops); toggle.click(phpbb.toggleDropdown); $('.dropdown-toggle-submenu', ops.parent).click(phpbb.toggleSubmenu); }; /** * Get the HTML for a color palette table. * * @param {string} dir Palette direction - either v or h * @param {int} width Palette cell width. * @param {int} height Palette cell height. */ phpbb.colorPalette = function(dir, width, height) { var r, g, b, numberList = new Array(6), color = '', html = ''; numberList[0] = '00'; numberList[1] = '40'; numberList[2] = '80'; numberList[3] = 'BF'; numberList[4] = 'FF'; var tableClass = (dir === 'h') ? 'horizontal-palette' : 'vertical-palette'; html += '<table class="not-responsive colour-palette ' + tableClass + '" style="width: auto;">'; for (r = 0; r < 5; r++) { if (dir === 'h') { html += '<tr>'; } for (g = 0; g < 5; g++) { if (dir === 'v') { html += '<tr>'; } for (b = 0; b < 5; b++) { color = '' + numberList[r] + numberList[g] + numberList[b]; html += '<td style="background-color: #' + color + '; width: ' + width + 'px; height: ' + height + 'px;"><a href="#" data-color="' + color + '" style="display: block; width: ' + width + 'px; height: ' + height + 'px; " alt="#' + color + '" title="#' + color + '"></a>'; html += '</td>'; } if (dir === 'v') { html += '</tr>'; } } if (dir === 'h') { html += '</tr>'; } } html += '</table>'; return html; }; /** * Register a color palette. * * @param {jQuery} el jQuery object for the palette container. */ phpbb.registerPalette = function(el) { var orientation = el.attr('data-color-palette') || el.attr('data-orientation'), // data-orientation kept for backwards compat. height = el.attr('data-height'), width = el.attr('data-width'), target = el.attr('data-target'), bbcode = el.attr('data-bbcode'); // Insert the palette HTML into the container. el.html(phpbb.colorPalette(orientation, width, height)); // Add toggle control. $('#color_palette_toggle').click(function(e) { el.toggle(); e.preventDefault(); }); // Attach event handler when a palette cell is clicked. $(el).on('click', 'a', function(e) { var color = $(this).attr('data-color'); if (bbcode) { bbfontstyle('[color=#' + color + ']', '[/color]'); } else { $(target).val(color); } e.preventDefault(); }); }; /** * Set display of page element * * @param {string} id The ID of the element to change * @param {int} action Set to 0 if element display should be toggled, -1 for * hiding the element, and 1 for showing it. * @param {string} type Display type that should be used, e.g. inline, block or * other CSS "display" types */ phpbb.toggleDisplay = function(id, action, type) { if (!type) { type = 'block'; } var $element = $('#' + id); var display = $element.css('display'); if (!action) { action = (display === '' || display === type) ? -1 : 1; } $element.css('display', ((action === 1) ? type : 'none')); }; /** * Toggle additional settings based on the selected * option of select element. * * @param {jQuery} el jQuery select element object. */ phpbb.toggleSelectSettings = function(el) { el.children().each(function() { var $this = $(this), $setting = $($this.data('toggle-setting')); $setting.toggle($this.is(':selected')); // Disable any input elements that are not visible right now if ($this.is(':selected')) { $($this.data('toggle-setting') + ' input').prop('disabled', false); } else { $($this.data('toggle-setting') + ' input').prop('disabled', true); } }); }; /** * Get function from name. * Based on http://stackoverflow.com/a/359910 * * @param {string} functionName Function to get. * @returns function */ phpbb.getFunctionByName = function (functionName) { var namespaces = functionName.split('.'), func = namespaces.pop(), context = window; for (var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } return context[func]; }; /** * Register page dropdowns. */ phpbb.registerPageDropdowns = function() { var $body = $('body'); $body.find('.dropdown-container').each(function() { var $this = $(this), $trigger = $this.find('.dropdown-trigger:first'), $contents = $this.find('.dropdown'), options = { direction: 'auto', verticalDirection: 'auto' }, data; if (!$trigger.length) { data = $this.attr('data-dropdown-trigger'); $trigger = data ? $this.children(data) : $this.children('a:first'); } if (!$contents.length) { data = $this.attr('data-dropdown-contents'); $contents = data ? $this.children(data) : $this.children('div:first'); } if (!$trigger.length || !$contents.length) { return; } if ($this.hasClass('dropdown-up')) { options.verticalDirection = 'up'; } if ($this.hasClass('dropdown-down')) { options.verticalDirection = 'down'; } if ($this.hasClass('dropdown-left')) { options.direction = 'left'; } if ($this.hasClass('dropdown-right')) { options.direction = 'right'; } phpbb.registerDropdown($trigger, $contents, options); }); // Hide active dropdowns when click event happens outside $body.click(function(e) { var $parents = $(e.target).parents(); if (!$parents.is(phpbb.dropdownVisibleContainers)) { $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); } }); }; /** * Handle avatars to be lazy loaded. */ phpbb.lazyLoadAvatars = function loadAvatars() { $('.avatar[data-src]').each(function () { var $avatar = $(this); $avatar .attr('src', $avatar.data('src')) .removeAttr('data-src'); }); }; phpbb.recaptcha = { button: null, ready: false, token: $('input[name="recaptcha_token"]'), form: $('.g-recaptcha').parents('form'), v3: $('[data-recaptcha-v3]'), load: function() { phpbb.recaptcha.bindButton(); phpbb.recaptcha.bindForm(); }, bindButton: function() { phpbb.recaptcha.form.find('input[type="submit"]').on('click', function() { // Listen to all the submit buttons for the form that has reCAPTCHA protection, // and store it so we can click the exact same button later on when we are ready. phpbb.recaptcha.button = this; }); }, bindForm: function() { phpbb.recaptcha.form.on('submit', function(e) { // If ready is false, it means the user pressed a submit button. // And the form was not submitted by us, after the token was loaded. if (!phpbb.recaptcha.ready) { // If version 3 is used, we need to make a different execution, // including the action and the site key. if (phpbb.recaptcha.v3.length) { grecaptcha.execute( phpbb.recaptcha.v3.data('recaptcha-v3'), {action: phpbb.recaptcha.v3.val()} ).then(function(token) { // Place the token inside the form phpbb.recaptcha.token.val(token); // And now we submit the form. phpbb.recaptcha.submitForm(); }); } else { // Regular version 2 execution grecaptcha.execute(); } // Do not submit the form e.preventDefault(); } }); }, submitForm: function() { // Now we are ready, so set it to true. // so the 'submit' event doesn't run multiple times. phpbb.recaptcha.ready = true; if (phpbb.recaptcha.button) { // If there was a specific button pressed initially, trigger the same button phpbb.recaptcha.button.click(); } else { if (typeof phpbb.recaptcha.form.submit !== 'function') { // Rename input[name="submit"] so that we can submit the form phpbb.recaptcha.form.submit.name = 'submit_btn'; } phpbb.recaptcha.form.submit(); } } }; // reCAPTCHA v2 doesn't accept callback functions nested inside objects // so we need to make this helper functions here window.phpbbRecaptchaOnLoad = function() { phpbb.recaptcha.load(); }; window.phpbbRecaptchaOnSubmit = function() { phpbb.recaptcha.submitForm(); }; $(window).on('load', phpbb.lazyLoadAvatars); /** * Apply code editor to all textarea elements with data-bbcode attribute */ $(function() { // reCAPTCHA v3 needs to be initialized if (phpbb.recaptcha.v3.length) { phpbb.recaptcha.load(); } $('textarea[data-bbcode]').each(function() { phpbb.applyCodeEditor(this); }); phpbb.registerPageDropdowns(); $('[data-color-palette], [data-orientation]').each(function() { phpbb.registerPalette($(this)); }); // Update browser history URL to point to specific post in viewtopic.php // when using view=unread#unread link. phpbb.history.replaceUrl($('#unread[data-url]').data('url')); // Hide settings that are not selected via select element. $('select[data-togglable-settings]').each(function() { var $this = $(this); $this.change(function() { phpbb.toggleSelectSettings($this); }); phpbb.toggleSelectSettings($this); }); }); })(jQuery); // Avoid conflicts with other libraries bin/phpbbcli.php 0100666 0000000 0000000 00000005540 13715656634 0013761 ustar 00Unknown Unknown #!/usr/bin/env php <?php /** * * This file is part of the phpBB Forum Software package. * * @copyright (c) phpBB Limited <https://www.phpbb.com> * @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ use Symfony\Component\Console\Input\ArgvInput; if (php_sapi_name() != 'cli') { echo 'This program must be run from the command line.' . PHP_EOL; exit(1); } define('IN_PHPBB', true); $phpbb_root_path = __DIR__ . '/../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); require($phpbb_root_path . 'includes/startup.' . $phpEx); require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx); $phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx); $phpbb_class_loader->register(); $phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx); extract($phpbb_config_php_file->get_all()); if (!defined('PHPBB_ENVIRONMENT')) { @define('PHPBB_ENVIRONMENT', 'production'); } require($phpbb_root_path . 'includes/constants.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx); require($phpbb_root_path . 'includes/functions_admin.' . $phpEx); require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); require($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx); $phpbb_container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx); $phpbb_container = $phpbb_container_builder->with_config($phpbb_config_php_file); $input = new ArgvInput(); if ($input->hasParameterOption(array('--env'))) { $phpbb_container_builder->with_environment($input->getParameterOption('--env')); } if ($input->hasParameterOption(array('--safe-mode'))) { $phpbb_container_builder->without_extensions(); $phpbb_container_builder->without_cache(); } else { $phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx); $phpbb_class_loader_ext->register(); } $phpbb_container = $phpbb_container_builder->get_container(); $phpbb_container->get('request')->enable_super_globals(); require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx); register_compatibility_globals(); /** @var \phpbb\config\config $config */ $config = $phpbb_container->get('config'); /** @var \phpbb\language\language $language */ $language = $phpbb_container->get('language'); $language->set_default_language($config['default_lang']); $language->add_lang(array('common', 'acp/common', 'cli')); /* @var $user \phpbb\user */ $user = $phpbb_container->get('user'); $user->data['user_id'] = ANONYMOUS; $user->ip = '127.0.0.1'; $application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language, $config); $application->setDispatcher($phpbb_container->get('dispatcher')); $application->register_container_commands($phpbb_container->get('console.command_collection')); $application->run($input); composer.json 0100666 0000000 0000000 00000003677 13715656633 0013447 ustar 00Unknown Unknown { "name": "phpbb/phpbb", "description": "phpBB Forum Software application", "type": "project", "keywords": ["phpbb", "forum"], "homepage": "https://www.phpbb.com", "license": "GPL-2.0-only", "authors": [ { "name": "phpBB Limited", "email": "operations@phpbb.com", "homepage": "https://www.phpbb.com/go/authors" } ], "support": { "issues": "https://tracker.phpbb.com", "forum": "https://www.phpbb.com/community/", "wiki": "https://wiki.phpbb.com", "irc": "irc://irc.freenode.org/phpbb" }, "scripts": { "post-update-cmd": "echo 'You MUST manually modify the clean-vendor-dir target in build/build.xml when adding or upgrading dependencies.'" }, "replace": { "phpbb/phpbb-core": "self.version" }, "require": { "php": "^7.1.3", "ext-json": "*", "bantu/ini-get-wrapper": "~1.0", "google/recaptcha": "~1.1", "guzzlehttp/guzzle": "~6.3", "lusitanian/oauth": "^0.8.1", "marc1706/fast-image-size": "^1.1", "patchwork/utf8": "^1.1", "s9e/text-formatter": "^2.0", "symfony/config": "~3.4", "symfony/console": "~3.4", "symfony/debug": "~3.4", "symfony/dependency-injection": "~3.4", "symfony/event-dispatcher": "~3.4", "symfony/filesystem": "~3.4", "symfony/finder": "~3.4", "symfony/http-foundation": "~3.4", "symfony/http-kernel": "~3.4", "symfony/process": "^3.4", "symfony/proxy-manager-bridge": "~3.4", "symfony/routing": "~3.4", "symfony/twig-bridge": "~3.4", "symfony/yaml": "~3.4", "twig/twig": "^1.0 || ^2.0" }, "require-dev": { "fabpot/goutte": "~3.2", "php-webdriver/webdriver": "~1.8", "laravel/homestead": "~7.0", "phing/phing": "~2.4", "phpunit/dbunit": "~4.0", "phpunit/phpunit": "^7.0", "squizlabs/php_codesniffer": "~3.4", "symfony/browser-kit": "~3.4", "symfony/css-selector": "~3.4", "symfony/dom-crawler": "~3.4", "sami/sami": "^4.1" }, "extra": { "branch-alias": { "dev-master": "3.3.x-dev" } }, "config": { "platform": { "php": "7.1.3" } } } composer.lock 0100666 0000000 0000000 00000526666 13715656633 0013436 ustar 00Unknown Unknown { "_readme": [ "This file locks the dependencies of your project to a known state", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "37203017dcb25b6276aa604eb4bcf44e", "packages": [ { "name": "bantu/ini-get-wrapper", "version": "v1.0.1", "source": { "type": "git", "url": "https://github.com/bantuXorg/php-ini-get-wrapper.git", "reference": "4770c7feab370c62e23db4f31c112b7c6d90aee2" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/bantuXorg/php-ini-get-wrapper/zipball/4770c7feab370c62e23db4f31c112b7c6d90aee2", "reference": "4770c7feab370c62e23db4f31c112b7c6d90aee2", "shasum": "" }, "require-dev": { "phpunit/phpunit": "3.7.*" }, "type": "library", "autoload": { "psr-4": { "bantu\\IniGetWrapper\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Convenience wrapper around ini_get()", "time": "2014-09-15T13:12:35+00:00" }, { "name": "google/recaptcha", "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/google/recaptcha.git", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/google/recaptcha/zipball/614f25a9038be4f3f2da7cbfd778dc5b357d2419", "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.2.20|^2.15", "php-coveralls/php-coveralls": "^2.1", "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.2.x-dev" } }, "autoload": { "psr-4": { "ReCaptcha\\": "src/ReCaptcha" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", "homepage": "https://www.google.com/recaptcha/", "keywords": [ "Abuse", "captcha", "recaptcha", "spam" ], "time": "2020-03-31T17:50:54+00:00" }, { "name": "guzzlehttp/guzzle", "version": "6.5.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", "php": ">=5.5", "symfony/polyfill-intl-idn": "^1.17.0" }, "require-dev": { "ext-curl": "*", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.1" }, "suggest": { "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { "dev-master": "6.5-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\": "src/" }, "files": [ "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" } ], "description": "Guzzle is a PHP HTTP client library", "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", "rest", "web service" ], "time": "2020-06-16T21:01:06+00:00" }, { "name": "guzzlehttp/promises", "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", "shasum": "" }, "require": { "php": ">=5.5.0" }, "require-dev": { "phpunit/phpunit": "^4.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.4-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" }, "files": [ "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" } ], "description": "Guzzle promises library", "keywords": [ "promise" ], "time": "2016-12-20T10:07:11+00:00" }, { "name": "guzzlehttp/psr7", "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", "reference": "239400de7a173fe9901b9ac7c06497751f00727a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", "reference": "239400de7a173fe9901b9ac7c06497751f00727a", "shasum": "" }, "require": { "php": ">=5.4.0", "psr/http-message": "~1.0", "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { "ext-zlib": "*", "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, "suggest": { "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.6-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" }, "files": [ "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, { "name": "Tobias Schultze", "homepage": "https://github.com/Tobion" } ], "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ "http", "message", "psr-7", "request", "response", "stream", "uri", "url" ], "time": "2019-07-01T23:21:34+00:00" }, { "name": "lusitanian/oauth", "version": "v0.8.11", "source": { "type": "git", "url": "https://github.com/Lusitanian/PHPoAuthLib.git", "reference": "fc11a53db4b66da555a6a11fce294f574a8374f9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/fc11a53db4b66da555a6a11fce294f574a8374f9", "reference": "fc11a53db4b66da555a6a11fce294f574a8374f9", "shasum": "" }, "require": { "php": ">=5.3.0" }, "require-dev": { "phpunit/phpunit": "3.7.*", "predis/predis": "0.8.*@dev", "squizlabs/php_codesniffer": "2.*", "symfony/http-foundation": "~2.1" }, "suggest": { "ext-openssl": "Allows for usage of secure connections with the stream-based HTTP client.", "predis/predis": "Allows using the Redis storage backend.", "symfony/http-foundation": "Allows using the Symfony Session storage backend." }, "type": "library", "extra": { "branch-alias": { "dev-master": "0.1-dev" } }, "autoload": { "psr-0": { "OAuth": "src", "OAuth\\Unit": "tests" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "David Desberg", "email": "david@daviddesberg.com" }, { "name": "Elliot Chance", "email": "elliotchance@gmail.com" }, { "name": "Pieter Hordijk", "email": "info@pieterhordijk.com" } ], "description": "PHP 5.3+ oAuth 1/2 Library", "keywords": [ "Authentication", "authorization", "oauth", "security" ], "time": "2016-07-12T22:15:00+00:00" }, { "name": "marc1706/fast-image-size", "version": "v1.1.6", "source": { "type": "git", "url": "https://github.com/marc1706/fast-image-size.git", "reference": "3a3a2b036be20f43fa06ce00dfa754df503e6684" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/marc1706/fast-image-size/zipball/3a3a2b036be20f43fa06ce00dfa754df503e6684", "reference": "3a3a2b036be20f43fa06ce00dfa754df503e6684", "shasum": "" }, "require": { "ext-mbstring": "*", "php": ">=5.3.0" }, "require-dev": { "phpunit/phpunit": "^4.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { "FastImageSize\\": "lib", "FastImageSize\\tests\\": "tests" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marc Alexander", "email": "admin@m-a-styles.de", "homepage": "https://www.m-a-styles.de", "role": "Developer" } ], "description": "fast-image-size is a PHP library that does almost everything PHP's getimagesize() does but without the large overhead of downloading the complete file.", "homepage": "https://www.m-a-styles.de", "keywords": [ "fast", "getimagesize", "image", "imagesize", "php", "size" ], "time": "2019-12-07T08:02:07+00:00" }, { "name": "ocramius/package-versions", "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", "shasum": "" }, "require": { "composer-plugin-api": "^1.0.0", "php": "^7.1.0" }, "require-dev": { "composer/composer": "^1.6.3", "doctrine/coding-standard": "^5.0.1", "ext-zip": "*", "infection/infection": "^0.7.1", "phpunit/phpunit": "^7.5.17" }, "type": "composer-plugin", "extra": { "class": "PackageVersions\\Installer", "branch-alias": { "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marco Pivetta", "email": "ocramius@gmail.com" } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "time": "2019-11-15T16:17:10+00:00" }, { "name": "ocramius/proxy-manager", "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", "shasum": "" }, "require": { "ocramius/package-versions": "^1.1.1", "php": "^7.1.0", "zendframework/zend-code": "^3.1.0" }, "require-dev": { "couscous/couscous": "^1.5.2", "ext-phar": "*", "humbug/humbug": "dev-master@DEV", "nikic/php-parser": "^3.0.4", "phpbench/phpbench": "^0.12.2", "phpstan/phpstan": "^0.6.4", "phpunit/phpunit": "^5.6.4", "phpunit/phpunit-mock-objects": "^3.4.1", "squizlabs/php_codesniffer": "^2.7.0" }, "suggest": { "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.0.x-dev" } }, "autoload": { "psr-0": { "ProxyManager\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", "homepage": "http://ocramius.github.io/" } ], "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", "homepage": "https://github.com/Ocramius/ProxyManager", "keywords": [ "aop", "lazy loading", "proxy", "proxy pattern", "service proxies" ], "time": "2017-05-04T11:12:50+00:00" }, { "name": "paragonie/random_compat", "version": "v9.99.99", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "shasum": "" }, "require": { "php": "^7" }, "require-dev": { "phpunit/phpunit": "4.*|5.*", "vimeo/psalm": "^1" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Paragon Initiative Enterprises", "email": "security@paragonie.com", "homepage": "https://paragonie.com" } ], "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", "polyfill", "pseudorandom", "random" ], "time": "2018-07-02T15:55:56+00:00" }, { "name": "patchwork/utf8", "version": "v1.3.2", "source": { "type": "git", "url": "https://github.com/tchwork/utf8.git", "reference": "d296e0026e7ce10b2a9fe594feca9628ef00e9e8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/tchwork/utf8/zipball/d296e0026e7ce10b2a9fe594feca9628ef00e9e8", "reference": "d296e0026e7ce10b2a9fe594feca9628ef00e9e8", "shasum": "" }, "require": { "lib-pcre": ">=7.3", "php": ">=5.3.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.4|^4.4" }, "suggest": { "ext-iconv": "Use iconv for best performance", "ext-intl": "Use Intl for best performance", "ext-mbstring": "Use Mbstring for best performance", "ext-wfio": "Use WFIO for UTF-8 filesystem access on Windows" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { "Patchwork\\": "src/Patchwork/" }, "classmap": [ "src/Normalizer.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "(Apache-2.0 or GPL-2.0)" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" } ], "description": "Portable and performant UTF-8, Unicode and Grapheme Clusters for PHP", "homepage": "https://github.com/tchwork/utf8", "keywords": [ "grapheme", "i18n", "unicode", "utf-8", "utf8" ], "time": "2019-12-03T14:44:12+00:00" }, { "name": "psr/container", "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", "homepage": "https://github.com/php-fig/container", "keywords": [ "PSR-11", "container", "container-interface", "container-interop", "psr" ], "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/http-message", "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", "homepage": "https://github.com/php-fig/http-message", "keywords": [ "http", "http-message", "psr", "psr-7", "request", "response" ], "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for logging libraries", "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], "time": "2020-03-23T09:12:05+00:00" }, { "name": "ralouphie/getallheaders", "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/ralouphie/getallheaders.git", "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { "php": ">=5.6" }, "require-dev": { "php-coveralls/php-coveralls": "^2.1", "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { "files": [ "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Ralph Khattar", "email": "ralph.khattar@gmail.com" } ], "description": "A polyfill for getallheaders.", "time": "2019-03-08T08:55:37+00:00" }, { "name": "s9e/regexp-builder", "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/s9e/RegexpBuilder.git", "reference": "605b33841a766abd40ba3d07c15d0f62b5e7f033" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/s9e/RegexpBuilder/zipball/605b33841a766abd40ba3d07c15d0f62b5e7f033", "reference": "605b33841a766abd40ba3d07c15d0f62b5e7f033", "shasum": "" }, "require": { "lib-pcre": ">=7.2", "php": ">=5.5.1" }, "require-dev": { "phpunit/phpunit": "*" }, "type": "library", "autoload": { "psr-4": { "s9e\\RegexpBuilder\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Single-purpose library that generates regular expressions that match a list of strings.", "homepage": "https://github.com/s9e/RegexpBuilder/", "keywords": [ "regexp" ], "time": "2020-01-08T02:46:22+00:00" }, { "name": "s9e/sweetdom", "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/s9e/SweetDOM.git", "reference": "f3a58c723fbe04d92ebcef5c8c7913bb364f58cd" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/s9e/SweetDOM/zipball/f3a58c723fbe04d92ebcef5c8c7913bb364f58cd", "reference": "f3a58c723fbe04d92ebcef5c8c7913bb364f58cd", "shasum": "" }, "require": { "ext-dom": "*", "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "*" }, "type": "library", "autoload": { "psr-4": { "s9e\\SweetDOM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Syntactic sugar for the DOM API with a focus on XSLT 1.0 template manipulation.", "homepage": "https://github.com/s9e/SweetDOM/", "keywords": [ "dom", "xsl", "xslt" ], "time": "2020-05-25T15:01:02+00:00" }, { "name": "s9e/text-formatter", "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/s9e/TextFormatter.git", "reference": "16a1c759307da654bedd7b649bef6930384e9561" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/16a1c759307da654bedd7b649bef6930384e9561", "reference": "16a1c759307da654bedd7b649bef6930384e9561", "shasum": "" }, "require": { "ext-dom": "*", "ext-filter": "*", "lib-pcre": ">=8.13", "php": ">=7.1", "s9e/regexp-builder": "^1.4", "s9e/sweetdom": "^1.0" }, "require-dev": { "matthiasmullie/minify": "*", "phpunit/phpunit": "*", "sami/sami": "4.*" }, "suggest": { "ext-curl": "Improves the performance of the MediaEmbed plugin and some JavaScript minifiers", "ext-intl": "Allows international URLs to be accepted by the URL filter", "ext-json": "Enables the generation of a JavaScript parser", "ext-mbstring": "Improves the performance of the PHP renderer", "ext-tokenizer": "Improves the performance of the PHP renderer", "ext-xsl": "Enables the XSLT renderer", "ext-zlib": "Enables gzip compression when scraping content via the MediaEmbed plugin" }, "type": "library", "extra": { "version": "2.7.1" }, "autoload": { "psr-4": { "s9e\\TextFormatter\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Multi-purpose text formatting and markup library. Plugins offer support for BBCodes, Markdown, emoticons, HTML, embedding media (YouTube, etc...), enhanced typography and more.", "homepage": "https://github.com/s9e/TextFormatter/", "keywords": [ "bbcode", "bbcodes", "blog", "censor", "embed", "emoji", "emoticons", "engine", "forum", "html", "markdown", "markup", "media", "parser", "shortcodes" ], "time": "2020-06-06T14:59:45+00:00" }, { "name": "symfony/config", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/config.git", "reference": "cd61db31cbd19cbe4ba9f6968f13c9076e1372ab" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/config/zipball/cd61db31cbd19cbe4ba9f6968f13c9076e1372ab", "reference": "cd61db31cbd19cbe4ba9f6968f13c9076e1372ab", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/filesystem": "~2.8|~3.0|~4.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/dependency-injection": "<3.3", "symfony/finder": "<3.3" }, "require-dev": { "symfony/dependency-injection": "~3.3|~4.0", "symfony/event-dispatcher": "~3.3|~4.0", "symfony/finder": "~3.3|~4.0", "symfony/yaml": "~3.0|~4.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Config Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-22T10:56:48+00:00" }, { "name": "symfony/console", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/console.git", "reference": "bfe29ead7e7b1cc9ce74c6a40d06ad1f96fced13" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/console/zipball/bfe29ead7e7b1cc9ce74c6a40d06ad1f96fced13", "reference": "bfe29ead7e7b1cc9ce74c6a40d06ad1f96fced13", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "symfony/dependency-injection": "<3.4", "symfony/process": "<3.3" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", "symfony/config": "~3.3|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", "symfony/lock": "~3.4|~4.0", "symfony/process": "~3.3|~4.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Console Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-30T18:58:05+00:00" }, { "name": "symfony/debug", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", "reference": "518c6a00d0872da30bd06aee3ea59a0a5cf54d6d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/debug/zipball/518c6a00d0872da30bd06aee3ea59a0a5cf54d6d", "reference": "518c6a00d0872da30bd06aee3ea59a0a5cf54d6d", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "psr/log": "~1.0" }, "conflict": { "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { "symfony/http-kernel": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-22T18:25:20+00:00" }, { "name": "symfony/dependency-injection", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", "reference": "e39380b7104b0ec538a075ae919f00c7e5267bac" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e39380b7104b0ec538a075ae919f00c7e5267bac", "reference": "e39380b7104b0ec538a075ae919f00c7e5267bac", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "psr/container": "^1.0" }, "conflict": { "symfony/config": "<3.3.7", "symfony/finder": "<3.3", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, "provide": { "psr/container-implementation": "1.0" }, "require-dev": { "symfony/config": "~3.3|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/config": "", "symfony/expression-language": "For using expressions in service container configuration", "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-30T21:06:01+00:00" }, { "name": "symfony/event-dispatcher", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", "reference": "14d978f8e8555f2de719c00eb65376be7d2e9081" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/14d978f8e8555f2de719c00eb65376be7d2e9081", "reference": "14d978f8e8555f2de719c00eb65376be7d2e9081", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "conflict": { "symfony/dependency-injection": "<3.3" }, "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.8|~3.0|~4.0", "symfony/dependency-injection": "~3.3|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/stopwatch": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/dependency-injection": "", "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-05T15:06:23+00:00" }, { "name": "symfony/filesystem", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/filesystem/zipball/0f625d0cb1e59c8c4ba61abb170125175218ff10", "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-30T17:48:24+00:00" }, { "name": "symfony/finder", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", "reference": "5ec813ccafa8164ef21757e8c725d3a57da59200" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/finder/zipball/5ec813ccafa8164ef21757e8c725d3a57da59200", "reference": "5ec813ccafa8164ef21757e8c725d3a57da59200", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-02-14T07:34:21+00:00" }, { "name": "symfony/http-foundation", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", "reference": "fbd216d2304b1a3fe38d6392b04729c8dd356359" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fbd216d2304b1a3fe38d6392b04729c8dd356359", "reference": "fbd216d2304b1a3fe38d6392b04729c8dd356359", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php70": "~1.6" }, "require-dev": { "symfony/expression-language": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-16T13:15:54+00:00" }, { "name": "symfony/http-kernel", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", "reference": "6464a0475496040fe1f48428488d53e485be77a0" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6464a0475496040fe1f48428488d53e485be77a0", "reference": "6464a0475496040fe1f48428488d53e485be77a0", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "psr/log": "~1.0", "symfony/debug": "^3.3.3|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php56": "~1.8" }, "conflict": { "symfony/config": "<2.8", "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/cache": "~1.0", "symfony/browser-kit": "~2.8|~3.0|~4.0", "symfony/class-loader": "~2.8|~3.0", "symfony/config": "~2.8|~3.0|~4.0", "symfony/console": "~2.8|~3.0|~4.0", "symfony/css-selector": "~2.8|~3.0|~4.0", "symfony/dependency-injection": "^3.4.10|^4.0.10", "symfony/dom-crawler": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", "symfony/process": "~2.8|~3.0|~4.0", "symfony/routing": "~3.4|~4.0", "symfony/stopwatch": "~2.8|~3.0|~4.0", "symfony/templating": "~2.8|~3.0|~4.0", "symfony/translation": "~2.8|~3.0|~4.0", "symfony/var-dumper": "~3.3|~4.0" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", "symfony/finder": "", "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-06-12T10:57:07+00:00" }, { "name": "symfony/polyfill-ctype", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Gert de Pagter", "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "ctype", "polyfill", "portable" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:14:59+00:00" }, { "name": "symfony/polyfill-intl-idn", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", "shasum": "" }, "require": { "php": ">=5.3.3", "symfony/polyfill-mbstring": "^1.3", "symfony/polyfill-php72": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Laurent Bassin", "email": "laurent@bassin.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "idn", "intl", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-mbstring", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", "shasum": "" }, "require": { "php": ">=5.3.3" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", "mbstring", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php56", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", "reference": "e3c8c138280cdfe4b81488441555583aa1984e23" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e3c8c138280cdfe4b81488441555583aa1984e23", "reference": "e3c8c138280cdfe4b81488441555583aa1984e23", "shasum": "" }, "require": { "php": ">=5.3.3", "symfony/polyfill-util": "~1.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php56\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php70", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", "reference": "82225c2d7d23d7e70515496d249c0152679b468e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/82225c2d7d23d7e70515496d249c0152679b468e", "reference": "82225c2d7d23d7e70515496d249c0152679b468e", "shasum": "" }, "require": { "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php70\\": "" }, "files": [ "bootstrap.php" ], "classmap": [ "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php72", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", "reference": "f048e612a3905f34931127360bdd2def19a5e582" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", "reference": "f048e612a3905f34931127360bdd2def19a5e582", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-util", "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", "reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4afb4110fc037752cf0ce9869f9ab8162c4e20d7", "reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.17-dev" } }, "autoload": { "psr-4": { "Symfony\\Polyfill\\Util\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony utilities for portability of PHP codes", "homepage": "https://symfony.com", "keywords": [ "compat", "compatibility", "polyfill", "shim" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-12T16:14:59+00:00" }, { "name": "symfony/process", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/process.git", "reference": "8a895f0c92a7c4b10db95139bcff71bdf66d4d21" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/process/zipball/8a895f0c92a7c4b10db95139bcff71bdf66d4d21", "reference": "8a895f0c92a7c4b10db95139bcff71bdf66d4d21", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Process Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-23T17:05:51+00:00" }, { "name": "symfony/proxy-manager-bridge", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", "reference": "8807231226867bc74467671dba78d9a924a1181a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/8807231226867bc74467671dba78d9a924a1181a", "reference": "8807231226867bc74467671dba78d9a924a1181a", "shasum": "" }, "require": { "ocramius/proxy-manager": "~0.4|~1.0|~2.0", "php": "^5.5.9|>=7.0.8", "symfony/dependency-injection": "~3.4|~4.0" }, "require-dev": { "symfony/config": "~2.8|~3.0|~4.0" }, "type": "symfony-bridge", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Bridge\\ProxyManager\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony ProxyManager Bridge", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-03-16T08:31:04+00:00" }, { "name": "symfony/routing", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", "reference": "e0d43b6f9417ad59ecaa8e2f799b79eef417387f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/routing/zipball/e0d43b6f9417ad59ecaa8e2f799b79eef417387f", "reference": "e0d43b6f9417ad59ecaa8e2f799b79eef417387f", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "conflict": { "symfony/config": "<3.3.1", "symfony/dependency-injection": "<3.3", "symfony/yaml": "<3.4" }, "require-dev": { "doctrine/annotations": "~1.0", "psr/log": "~1.0", "symfony/config": "^3.3.1|~4.0", "symfony/dependency-injection": "~3.3|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/http-foundation": "~2.8|~3.0|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Routing Component", "homepage": "https://symfony.com", "keywords": [ "router", "routing", "uri", "url" ], "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-30T19:50:06+00:00" }, { "name": "symfony/twig-bridge", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", "reference": "742d91e175c84fc896c4a720bfc40ce0d7b9ff67" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/742d91e175c84fc896c4a720bfc40ce0d7b9ff67", "reference": "742d91e175c84fc896c4a720bfc40ce0d7b9ff67", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "twig/twig": "^1.41|^2.10" }, "conflict": { "symfony/console": "<3.4", "symfony/form": "<3.4.31|>=4.0,<4.3.4" }, "require-dev": { "fig/link-util": "^1.0", "symfony/asset": "~2.8|~3.0|~4.0", "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", "symfony/form": "^3.4.31|^4.3.4", "symfony/http-foundation": "^3.3.11|~4.0", "symfony/http-kernel": "~3.2|~4.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/routing": "~2.8|~3.0|~4.0", "symfony/security": "^2.8.31|^3.3.13|~4.0", "symfony/security-acl": "~2.8|~3.0", "symfony/stopwatch": "~2.8|~3.0|~4.0", "symfony/templating": "~2.8|~3.0|~4.0", "symfony/translation": "~2.8|~3.0|~4.0", "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0", "symfony/web-link": "~3.3|~4.0", "symfony/workflow": "~3.3|~4.0", "symfony/yaml": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/asset": "For using the AssetExtension", "symfony/expression-language": "For using the ExpressionExtension", "symfony/finder": "", "symfony/form": "For using the FormExtension", "symfony/http-kernel": "For using the HttpKernelExtension", "symfony/routing": "For using the RoutingExtension", "symfony/security": "For using the SecurityExtension", "symfony/stopwatch": "For using the StopwatchExtension", "symfony/templating": "For using the TwigEngine", "symfony/translation": "For using the TranslationExtension", "symfony/var-dumper": "For using the DumpExtension", "symfony/web-link": "For using the WebLinkExtension", "symfony/yaml": "For using the YamlExtension" }, "type": "symfony-bridge", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Bridge\\Twig\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-03-16T08:31:04+00:00" }, { "name": "symfony/yaml", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", "reference": "7233ac2bfdde24d672f5305f2b3f6b5d741ef8eb" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/yaml/zipball/7233ac2bfdde24d672f5305f2b3f6b5d741ef8eb", "reference": "7233ac2bfdde24d672f5305f2b3f6b5d741ef8eb", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/console": "<3.4" }, "require-dev": { "symfony/console": "~3.4|~4.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-11T07:51:54+00:00" }, { "name": "twig/twig", "version": "v2.12.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", "shasum": "" }, "require": { "php": "^7.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { "psr/container": "^1.0", "symfony/phpunit-bridge": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.12-dev" } }, "autoload": { "psr-0": { "Twig_": "lib/" }, "psr-4": { "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com", "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, { "name": "Twig Team", "role": "Contributors" }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", "homepage": "https://twig.symfony.com", "keywords": [ "templating" ], "time": "2020-02-11T15:31:23+00:00" }, { "name": "zendframework/zend-code", "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", "reference": "268040548f92c2bfcba164421c1add2ba43abaaa" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa", "reference": "268040548f92c2bfcba164421c1add2ba43abaaa", "shasum": "" }, "require": { "php": "^7.1", "zendframework/zend-eventmanager": "^2.6 || ^3.0" }, "conflict": { "phpspec/prophecy": "<1.9.0" }, "require-dev": { "doctrine/annotations": "^1.7", "ext-phar": "*", "phpunit/phpunit": "^7.5.16 || ^8.4", "zendframework/zend-coding-standard": "^1.0", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", "zendframework/zend-stdlib": "Zend\\Stdlib component" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4.x-dev", "dev-develop": "3.5.x-dev", "dev-dev-4.0": "4.0.x-dev" } }, "autoload": { "psr-4": { "Zend\\Code\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", "keywords": [ "ZendFramework", "code", "zf" ], "abandoned": "laminas/laminas-code", "time": "2019-12-10T19:21:15+00:00" }, { "name": "zendframework/zend-eventmanager", "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", "reference": "a5e2583a211f73604691586b8406ff7296a946dd" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", "reference": "a5e2583a211f73604691586b8406ff7296a946dd", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { "athletic/athletic": "^0.1", "container-interop/container-interop": "^1.1.0", "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-stdlib": "^2.7.3 || ^3.0" }, "suggest": { "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.2-dev", "dev-develop": "3.3-dev" } }, "autoload": { "psr-4": { "Zend\\EventManager\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "description": "Trigger and listen to events within a PHP application", "homepage": "https://github.com/zendframework/zend-eventmanager", "keywords": [ "event", "eventmanager", "events", "zf2" ], "abandoned": "laminas/laminas-eventmanager", "time": "2018-04-25T15:33:34+00:00" } ], "packages-dev": [ { "name": "blackfire/php-sdk", "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/blackfireio/php-sdk.git", "reference": "c11e9546182fcd8c2f3b1d5a4b867da062264355" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/blackfireio/php-sdk/zipball/c11e9546182fcd8c2f3b1d5a4b867da062264355", "reference": "c11e9546182fcd8c2f3b1d5a4b867da062264355", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", "php": ">=5.2.0" }, "require-dev": { "guzzlehttp/psr7": "^1.6", "psr/http-message": "^1.0", "symfony/http-client": "^4.3" }, "suggest": { "ext-blackfire": "The C version of the Blackfire probe", "ext-zlib": "To push config to remote profiling targets" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.5.x-dev" } }, "autoload": { "files": [ "src/autostart.php" ], "psr-4": { "Blackfire\\": "src/Blackfire" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Blackfire.io", "email": "support@blackfire.io" } ], "description": "Blackfire.io PHP SDK", "keywords": [ "performance", "profiler", "uprofiler", "xhprof" ], "funding": [ { "url": "https://blackfire.io/", "type": "custom" } ], "time": "2020-05-29T11:19:11+00:00" }, { "name": "composer/ca-bundle", "version": "1.2.7", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { "Composer\\CaBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be" } ], "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", "keywords": [ "cabundle", "cacert", "certificate", "ssl", "tls" ], "funding": [ { "url": "https://packagist.com", "type": "custom" }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], "time": "2020-04-08T08:27:21+00:00" }, { "name": "doctrine/instantiator", "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.13", "phpstan/phpstan-phpunit": "^0.11", "phpstan/phpstan-shim": "^0.11", "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.2.x-dev" } }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", "homepage": "http://ocramius.github.com/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { "url": "https://www.patreon.com/phpdoctrine", "type": "patreon" }, { "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", "type": "tidelift" } ], "time": "2020-05-29T17:27:14+00:00" }, { "name": "fabpot/goutte", "version": "v3.2.3", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/Goutte.git", "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3f0eaf0a40181359470651f1565b3e07e3dd31b8", "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^6.0", "php": ">=5.5.0", "symfony/browser-kit": "~2.1|~3.0|~4.0", "symfony/css-selector": "~2.1|~3.0|~4.0", "symfony/dom-crawler": "~2.1|~3.0|~4.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.3 || ^4" }, "type": "application", "extra": { "branch-alias": { "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { "Goutte\\": "Goutte" }, "exclude-from-classmap": [ "Goutte/Tests" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "description": "A simple PHP Web Scraper", "homepage": "https://github.com/FriendsOfPHP/Goutte", "keywords": [ "scraper" ], "time": "2018-06-29T15:13:57+00:00" }, { "name": "laravel/homestead", "version": "v7.20.0", "source": { "type": "git", "url": "https://github.com/laravel/homestead.git", "reference": "cae38adcfdde1de1c4581e7a33872adaf9fbf926" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/laravel/homestead/zipball/cae38adcfdde1de1c4581e7a33872adaf9fbf926", "reference": "cae38adcfdde1de1c4581e7a33872adaf9fbf926", "shasum": "" }, "require": { "php": "^5.6 || ^7.0", "symfony/console": "~3.3|~4.0", "symfony/process": "~3.3|~4.0", "symfony/yaml": "~3.3|~4.0" }, "require-dev": { "phly/changelog-generator": "^2.2", "phpunit/phpunit": "^5.7 || ^6.0" }, "bin": [ "bin/homestead" ], "type": "library", "extra": { "branch-alias": { "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { "Laravel\\Homestead\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Taylor Otwell", "email": "taylorotwell@gmail.com" } ], "description": "A virtual machine for web artisans.", "time": "2018-12-11T02:04:35+00:00" }, { "name": "michelf/php-markdown", "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/michelf/php-markdown.git", "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c", "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c", "shasum": "" }, "require": { "php": ">=5.3.0" }, "require-dev": { "phpunit/phpunit": ">=4.3 <5.8" }, "type": "library", "autoload": { "psr-4": { "Michelf\\": "Michelf/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Michel Fortin", "email": "michel.fortin@michelf.ca", "homepage": "https://michelf.ca/", "role": "Developer" }, { "name": "John Gruber", "homepage": "https://daringfireball.net/" } ], "description": "PHP Markdown", "homepage": "https://michelf.ca/projects/php-markdown/", "keywords": [ "markdown" ], "time": "2019-12-02T02:32:27+00:00" }, { "name": "myclabs/deep-copy", "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { "php": "^7.1" }, "replace": { "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" }, "files": [ "src/DeepCopy/deep_copy.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", "keywords": [ "clone", "copy", "duplicate", "object", "object graph" ], "time": "2020-01-17T21:11:47+00:00" }, { "name": "nikic/php-parser", "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", "shasum": "" }, "require": { "ext-tokenizer": "*", "php": ">=5.5" }, "require-dev": { "phpunit/phpunit": "~4.0|~5.0" }, "bin": [ "bin/php-parse" ], "type": "library", "extra": { "branch-alias": { "dev-master": "3.0-dev" } }, "autoload": { "psr-4": { "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Nikita Popov" } ], "description": "A PHP parser written in PHP", "keywords": [ "parser", "php" ], "time": "2018-02-28T20:30:58+00:00" }, { "name": "phar-io/manifest", "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "description": "Library for handling version information and constraints", "time": "2018-07-08T19:19:57+00:00" }, { "name": "phing/phing", "version": "2.16.3", "source": { "type": "git", "url": "https://github.com/phingofficial/phing.git", "reference": "b34c2bf9cd6abd39b4287dee31e68673784c8567" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phingofficial/phing/zipball/b34c2bf9cd6abd39b4287dee31e68673784c8567", "reference": "b34c2bf9cd6abd39b4287dee31e68673784c8567", "shasum": "" }, "require": { "php": ">=5.2.0" }, "require-dev": { "ext-pdo_sqlite": "*", "mikey179/vfsstream": "^1.6", "pdepend/pdepend": "2.x", "pear/archive_tar": "1.4.x", "pear/http_request2": "dev-trunk", "pear/net_growl": "dev-trunk", "pear/pear-core-minimal": "1.10.1", "pear/versioncontrol_git": "@dev", "pear/versioncontrol_svn": "~0.5", "phpdocumentor/phpdocumentor": "2.x", "phploc/phploc": "~2.0.6", "phpmd/phpmd": "~2.2", "phpunit/phpunit": ">=3.7", "sebastian/git": "~1.0", "sebastian/phpcpd": "2.x", "siad007/versioncontrol_hg": "^1.0", "simpletest/simpletest": "^1.1", "squizlabs/php_codesniffer": "~2.2", "symfony/yaml": "^2.8 || ^3.1 || ^4.0" }, "suggest": { "pdepend/pdepend": "PHP version of JDepend", "pear/archive_tar": "Tar file management class", "pear/versioncontrol_git": "A library that provides OO interface to handle Git repository", "pear/versioncontrol_svn": "A simple OO-style interface for Subversion, the free/open-source version control system", "phpdocumentor/phpdocumentor": "Documentation Generator for PHP", "phploc/phploc": "A tool for quickly measuring the size of a PHP project", "phpmd/phpmd": "PHP version of PMD tool", "phpunit/php-code-coverage": "Library that provides collection, processing, and rendering functionality for PHP code coverage information", "phpunit/phpunit": "The PHP Unit Testing Framework", "sebastian/phpcpd": "Copy/Paste Detector (CPD) for PHP code", "siad007/versioncontrol_hg": "A library for interfacing with Mercurial repositories.", "tedivm/jshrink": "Javascript Minifier built in PHP" }, "bin": [ "bin/phing" ], "type": "library", "extra": { "branch-alias": { "dev-master": "2.16.x-dev" } }, "autoload": { "classmap": [ "classes/phing/" ] }, "notification-url": "https://packagist.org/downloads/", "include-path": [ "classes" ], "license": [ "LGPL-3.0-only" ], "authors": [ { "name": "Michiel Rook", "email": "mrook@php.net" }, { "name": "Phing Community", "homepage": "https://www.phing.info/trac/wiki/Development/Contributors" } ], "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", "homepage": "https://www.phing.info/", "keywords": [ "build", "phing", "task", "tool" ], "time": "2020-02-03T18:50:54+00:00" }, { "name": "php-webdriver/webdriver", "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", "reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab", "reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-zip": "*", "php": "^5.6 || ~7.0", "symfony/polyfill-mbstring": "^1.12", "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", "jakub-onderka/php-parallel-lint": "^1.0", "php-coveralls/php-coveralls": "^2.0", "php-mock/php-mock-phpunit": "^1.1", "phpunit/phpunit": "^5.7", "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", "sminnee/phpunit-mock-objects": "^3.4", "squizlabs/php_codesniffer": "^3.5", "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0" }, "suggest": { "ext-SimpleXML": "For Firefox profile creation" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.8.x-dev" } }, "autoload": { "psr-4": { "Facebook\\WebDriver\\": "lib/" }, "files": [ "lib/Exception/TimeoutException.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "A PHP client for Selenium WebDriver. Previously facebook/webdriver.", "homepage": "https://github.com/php-webdriver/php-webdriver", "keywords": [ "Chromedriver", "geckodriver", "php", "selenium", "webdriver" ], "time": "2020-03-04T14:40:12+00:00" }, { "name": "phpdocumentor/reflection-docblock", "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { "phpunit/phpunit": "~4.0" }, "suggest": { "dflydev/markdown": "~1.0", "erusev/parsedown": "~1.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.0.x-dev" } }, "autoload": { "psr-0": { "phpDocumentor": [ "src/" ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Mike van Riel", "email": "mike.vanriel@naenius.com" } ], "time": "2016-01-25T08:17:30+00:00" }, { "name": "phpspec/prophecy", "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.10.x-dev" } }, "autoload": { "psr-4": { "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Konstantin Kudryashov", "email": "ever.zet@gmail.com", "homepage": "http://everzet.com" }, { "name": "Marcello Duarte", "email": "marcello.duarte@gmail.com" } ], "description": "Highly opinionated mocking framework for PHP 5.3+", "homepage": "https://github.com/phpspec/prophecy", "keywords": [ "Double", "Dummy", "fake", "mock", "spy", "stub" ], "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/dbunit", "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/dbunit.git", "reference": "e77b469c3962b5a563f09a2a989f1c9bd38b8615" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/e77b469c3962b5a563f09a2a989f1c9bd38b8615", "reference": "e77b469c3962b5a563f09a2a989f1c9bd38b8615", "shasum": "" }, "require": { "ext-pdo": "*", "ext-simplexml": "*", "php": "^7.1", "phpunit/phpunit": "^7.0", "symfony/yaml": "^3.0 || ^4.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "4.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "PHPUnit extension for database interaction testing", "homepage": "https://github.com/sebastianbergmann/dbunit/", "keywords": [ "database", "testing", "xunit" ], "abandoned": true, "time": "2018-02-07T06:47:59+00:00" }, { "name": "phpunit/php-code-coverage", "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", "php": "^7.1", "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", "sebastian/environment": "^3.1 || ^4.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { "phpunit/phpunit": "^7.0" }, "suggest": { "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "6.1-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ "coverage", "testing", "xunit" ], "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ "filesystem", "iterator" ], "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Simple template engine.", "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ "template" ], "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.1-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Utility class for timing", "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ "timer" ], "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.1-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Wrapper around PHP's tokenizer extension.", "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ "tokenizer" ], "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", "version": "7.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "shasum": "" }, "require": { "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "myclabs/deep-copy": "^1.7", "phar-io/manifest": "^1.0.2", "phar-io/version": "^2.0", "php": "^7.1", "phpspec/prophecy": "^1.7", "phpunit/php-code-coverage": "^6.0.7", "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^2.1", "sebastian/comparator": "^3.0", "sebastian/diff": "^3.0", "sebastian/environment": "^4.0", "sebastian/exporter": "^3.1", "sebastian/global-state": "^2.0", "sebastian/object-enumerator": "^3.0.3", "sebastian/resource-operations": "^2.0", "sebastian/version": "^2.0.1" }, "conflict": { "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-soap": "*", "ext-xdebug": "*", "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { "dev-master": "7.5-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], "time": "2020-01-08T08:45:45+00:00" }, { "name": "pimple/pimple", "version": "v3.2.3", "source": { "type": "git", "url": "https://github.com/silexphp/Pimple.git", "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32", "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32", "shasum": "" }, "require": { "php": ">=5.3.0", "psr/container": "^1.0" }, "require-dev": { "symfony/phpunit-bridge": "^3.2" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.2.x-dev" } }, "autoload": { "psr-0": { "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "description": "Pimple, a simple Dependency Injection Container", "homepage": "http://pimple.sensiolabs.org", "keywords": [ "container", "dependency injection" ], "time": "2018-01-21T07:42:36+00:00" }, { "name": "sami/sami", "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/Sami.git", "reference": "19b8a82b858bd31544c468317c8307188ccb4022" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/FriendsOfPHP/Sami/zipball/19b8a82b858bd31544c468317c8307188ccb4022", "reference": "19b8a82b858bd31544c468317c8307188ccb4022", "shasum": "" }, "require": { "blackfire/php-sdk": "^1.5.18", "michelf/php-markdown": "~1.3", "nikic/php-parser": "~3.0", "php": "^7.1.3", "phpdocumentor/reflection-docblock": "~2.0", "pimple/pimple": "~3.0", "symfony/console": "~3.0|~4.0", "symfony/filesystem": "~3.0|~4.0", "symfony/finder": "~3.0|~4.0", "symfony/process": "~3.0|~4.0", "symfony/yaml": "~3.0|~4.0", "twig/twig": "~2.0" }, "require-dev": { "symfony/phpunit-bridge": "~4.0" }, "bin": [ "sami.php" ], "type": "application", "extra": { "branch-alias": { "dev-master": "4.1-dev" } }, "autoload": { "psr-4": { "Sami\\": "Sami/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" } ], "description": "Sami, an API documentation generator", "homepage": "http://sami.sensiolabs.org", "keywords": [ "phpdoc" ], "abandoned": true, "time": "2018-07-02T13:20:39+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { "php": "^7.1", "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Volker Dusch", "email": "github@wallbash.com" }, { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ "diff", "udiff", "unidiff", "unified diff" ], "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^7.5" }, "suggest": { "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { "dev-master": "4.2-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Provides functionality to handle HHVM/PHP environments", "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", "hhvm" ], "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { "php": "^7.0", "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.1.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Volker Dusch", "email": "github@wallbash.com" }, { "name": "Adam Harvey", "email": "aharvey@php.net" }, { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { "php": "^7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Snapshotting of global state", "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { "php": "^7.0", "sebastian/object-reflector": "^1.1.1", "sebastian/recursion-context": "^3.0" }, "require-dev": { "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "time": "2017-08-03T12:35:26+00:00" }, { "name": "sebastian/object-reflector", "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", "reference": "773f97c67f28de00d397be301821b06708fca0be" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", "reference": "773f97c67f28de00d397be301821b06708fca0be", "shasum": "" }, "require": { "php": "^7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "1.1-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { "php": "^7.0" }, "require-dev": { "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, { "name": "Adam Harvey", "email": "aharvey@php.net" } ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.0-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { "dev-master": "2.0.x-dev" } }, "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, { "name": "squizlabs/php_codesniffer", "version": "3.5.5", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6", "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", "php": ">=5.4.0" }, "require-dev": { "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "bin": [ "bin/phpcs", "bin/phpcbf" ], "type": "library", "extra": { "branch-alias": { "dev-master": "3.x-dev" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Greg Sherwood", "role": "lead" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], "time": "2020-04-17T01:09:41+00:00" }, { "name": "symfony/browser-kit", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", "reference": "1467e0c7cf0c5c2c08dc9b45ca0300ac3cd3a824" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/browser-kit/zipball/1467e0c7cf0c5c2c08dc9b45ca0300ac3cd3a824", "reference": "1467e0c7cf0c5c2c08dc9b45ca0300ac3cd3a824", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/dom-crawler": "~2.8|~3.0|~4.0" }, "require-dev": { "symfony/css-selector": "~2.8|~3.0|~4.0", "symfony/process": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\BrowserKit\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-04-27T06:55:12+00:00" }, { "name": "symfony/css-selector", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/css-selector/zipball/9ccf6e78077a3fc1596e6c7b5958008965a11518", "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Jean-François Simon", "email": "jeanfrancois.simon@sensiolabs.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-03-16T08:31:04+00:00" }, { "name": "symfony/dom-crawler", "version": "v3.4.42", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", "reference": "c3086a58a66b2a519c0b7ac80539a3727609ea9c" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c3086a58a66b2a519c0b7ac80539a3727609ea9c", "reference": "c3086a58a66b2a519c0b7ac80539a3727609ea9c", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "symfony/css-selector": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/css-selector": "" }, "type": "library", "extra": { "branch-alias": { "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2020-05-22T19:35:43+00:00" }, { "name": "theseer/tokenizer", "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", "php": "^7.0" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "time": "2019-06-13T22:48:21+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^7.1.3", "ext-json": "*" }, "platform-dev": [], "platform-overrides": { "php": "7.1.3" }, "plugin-api-version": "1.1.0" } config/.htaccess 0100666 0000000 0000000 00000001715 13715656634 0013760 ustar 00Unknown Unknown # With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from # module mod_authz_host to a new module called mod_access_compat (which may be # disabled) and a new "Require" syntax has been introduced to mod_authz_host. # We could just conditionally provide both versions, but unfortunately Apache # does not explicitly tell us its version if the module mod_version is not # available. In this case, we check for the availability of module # mod_authz_core (which should be on 2.4 or higher only) as a best guess. <IfModule mod_version.c> <IfVersion < 2.4> <Files "*"> Order Allow,Deny Deny from All </Files> </IfVersion> <IfVersion >= 2.4> <Files "*"> Require all denied </Files> </IfVersion> </IfModule> <IfModule !mod_version.c> <IfModule !mod_authz_core.c> <Files "*"> Order Allow,Deny Deny from All </Files> </IfModule> <IfModule mod_authz_core.c> <Files "*"> Require all denied </Files> </IfModule> </IfModule>