EVOLUTION-MANAGER
Edit File: inc.brand.list.php
<?php defined("ABSPATH") or die(""); /* @var $global DUP_PRO_Brand_Entity */ // let's setup active brand if (isset($_GET['made_active']) && isset($_GET['id']) && $_GET['made_active'] == 'true') { $set_default_id = ($_GET['id'] > 0 ? (int)$_GET['id'] : -1); if ($set_default_id > 0) { $brand = DUP_PRO_Brand_Entity::get_by_id($set_default_id); } else { $brand = DUP_PRO_Brand_Entity::get_active(); } $save_active = new DUP_PRO_Brand_Entity(); $save_active->id = $brand->id; $save_active->name = $brand->name; $save_active->active = $set_default_id > 0 ? (!$brand->active ? true : false) : false; $save_active->attachments = $brand->attachments; $save_active->notes = $brand->notes; $save_active->logo = $brand->logo; $save_active->save(); if(is_multisite()) { $redirect_url = network_admin_url("admin.php?page=duplicator-pro-settings&tab=package&sub=brand", (DUP_PRO_U::is_ssl() ? 'https' : 'http')); } else { $redirect_url = get_admin_url(null, "admin.php?page=duplicator-pro-settings&tab=package&sub=brand" ); } exit(' <h1>' . DUP_PRO_U::__('Please wait...') . '</h1> <meta http-equiv="refresh" content="0; url='.$redirect_url.'"> <script type="text/javascript"> window.location.href = "'.$redirect_url.'" </script> '); } if (isset($_REQUEST['action'])) { //check_admin_referer($nonce_action); $action = $_REQUEST['action']; switch ($action) { case 'bulk-delete': $brand_ids = $_REQUEST['selected_id']; foreach ($brand_ids as $brand_id) { DUP_PRO_Brand_Entity::delete_by_id($brand_id); } break; case 'delete': $brand_id = (int) $_REQUEST['brand_id']; DUP_PRO_Brand_Entity::delete_by_id($brand_id); break; } } $brands = DUP_PRO_Brand_Entity::get_all(); $brand_count = count($brands); $is_freelancer_plus = (DUP_PRO_License_U::getLicenseType() >= DUP_PRO_License_Type::Freelancer); ?> <style> /*Detail Tables */ table.brand-tbl td {height: 45px} table.brand-tbl a.name {font-weight: bold} table.brand-tbl input[type='checkbox'] {margin-left: 5px} table.brand-tbl div.sub-menu {margin: 5px 0 0 2px; display: none} table tr.brand-detail {display:none; margin: 0;} table tr.brand-detail td { padding: 3px 0 5px 20px} table tr.brand-detail div {line-height: 20px; padding: 2px 2px 2px 15px} table tr.brand-detail td button {margin:5px 0 5px 0 !important; display: block} tr.brand-detail label {min-width: 150px; display: inline-block; font-weight: bold} form#dup-brand-form {padding:0} </style> <div <?php echo ($is_freelancer_plus) ? "style='display:none'" : ""; ?>> <h2><?php DUP_PRO_U::esc_html_e("Installer Branding") ?></h2> <hr size="1"/> <div style="width:850px"> <?php DUP_PRO_U::esc_html_e("Create your own WordPress distribution by adding a custom name and logo to the installer! " . "Installer branding lets you create multiple brands for your installers and then choose which one you want when the package is built (example shown below)."); ?> <br/><br/> <b> <?php DUP_PRO_U::esc_html_e("This feature is only available in Freelancer, Business or Gold licenses. For details on how to upgrade your license "); ?> </b> <a href="https://snapcreek.com/duplicator/docs/faqs/#faq-presale-035-q" target="_blank"><?php DUP_PRO_U::esc_html_e("click here"); ?></a>. <br/> </div> <div style="border:0px solid #999; padding: 5px; margin: 5px; border-radius: 5px; width:700px"> <img src="<?php echo DUPLICATOR_PRO_IMG_URL ?>/dpro-brand.png" style='' /> </div> <br/><br/> </div> <!-- ==================== TOOL-BAR --> <div <?php echo ($is_freelancer_plus) ? "" : "style='display:none'"; ?>> <table class="dpro-edit-toolbar"> <tr> <td> <select id="bulk_action"> <option value="-1" selected="selected"><?php _e("Bulk Actions"); ?></option> <option value="delete" title="<?php DUP_PRO_U::esc_attr_e('Delete selected brand endpoint(s)'); ?>"><?php _e("Delete"); ?></option> </select> <input type="button" class="button action" value="<?php DUP_PRO_U::esc_html_e("Apply") ?>" onclick="DupPro.Settings.Brand.BulkAction()"> </td> <td> <div class="btnnav"> <a href="javascript:void(0)" class="button disabled"><i class="far fa-image fa-lg"></i> <?php DUP_PRO_U::esc_html_e("Brands"); ?></a> <a href="javascript:void(0)" onclick="DupPro.Settings.Brand.AddNew()" class="button"><?php DUP_PRO_U::esc_html_e('Add New'); ?></a> </div> </td> </tr> </table> <form id="dup-brand-form" action="<?php echo $brand_list_url; ?>" method="post"> <?php wp_nonce_field($nonce_action); ?> <input type="hidden" id="dup-brand-form-action" name="action" value=""/> <input type="hidden" id="dup-selected-brand" name="brand_id" value="-1"/> <!-- ==================== LIST ALL STORAGE --> <table class="widefat brand-tbl"> <thead> <tr> <th style='width:10px;'><input type="checkbox" id="dpro-chk-all" title="Select all brand endpoints" onclick="DupPro.Settings.Brand.SetAll(this)"></th> <th style='width:300px;'><?php DUP_PRO_U::esc_html_e('Name'); ?></th> <th><?php DUP_PRO_U::esc_html_e('Active'); ?></th> </tr> </thead> <tbody> <?php ob_start(); // Must transfer data after default brand item $i = 0; $is_default_active = true; foreach ($brands as $x=>$brand) : if($x === 0) continue; // remove default item in list because is defined out of loop below $i++; if($brand->active) $is_default_active = false; //$brand_type = $brand->get_mode_text(); ?> <tr id='main-view-<?php echo $brand->id ?>' class="brand-row<?php echo ($i % 2) ? ' alternate' : ''; ?>"> <td> <?php if ($brand->editable) : ?> <input name="selected_id[]" type="checkbox" value="<?php echo $brand->id; ?>" class="item-chk" /> <?php else : ?> <input type="checkbox" disabled="disabled" /> <?php endif; ?> </td> <td> <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit('<?php echo $brand->id; ?>')"><b><?php echo $brand->name; ?></b></a> <?php if ($brand->editable) : ?> <div class="sub-menu"> <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit('<?php echo $brand->id; ?>')"><?php DUP_PRO_U::esc_html_e('Edit') ?></a> | <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brand->id; ?>');"><?php DUP_PRO_U::esc_html_e('Quick View') ?></a> <?php if(!$brand->active) : if(is_multisite()) { $activeUrl = network_admin_url("admin.php?page=duplicator-pro-settings&tab=package&sub=brand&made_active=true&id=".$brand->id, (DUP_PRO_U::is_ssl() ? 'https' : 'http')); } else { $activeUrl = get_admin_url(null, "admin.php?page=duplicator-pro-settings&tab=package&sub=brand&made_active=true&id=".$brand->id ); } ?>| <a href="<?php echo esc_attr($activeUrl); ?>" style="color:orangered;"> <?php DUP_PRO_U::esc_html_e('Set active'); ?> </a> <?php endif; ?> | <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Delete('<?php echo $brand->id; ?>');"><?php DUP_PRO_U::esc_html_e('Delete') ?></a> </div> <?php else : ?> <div class="sub-menu"> <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><?php DUP_PRO_U::esc_html_e('View') ?></a> | <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brand->id; ?>');"><?php DUP_PRO_U::esc_html_e('Quick View') ?></a> </div> <?php endif; ?> </td> <td> <?php if ($brand->active) : ?> <span class="fa fa-bolt fa-xs" style="color:green;"></span> <?php echo DUP_PRO_U::esc_html_e('Enabled'); ?> <?php endif; ?> </td> </tr> <tr id='quick-view-<?php echo $brand->id ?>' class='<?php echo ($i % 2) ? 'alternate ' : ''; ?>brand-detail'> <td colspan="3"> <b><?php DUP_PRO_U::esc_html_e('QUICK VIEW') ?></b> <br/> <div> <label><?php DUP_PRO_U::esc_html_e('Name') ?>:</label> <?php echo $brand->name ?> </div> <div> <label><?php DUP_PRO_U::esc_html_e('Notes') ?>:</label> <?php echo (strlen($brand->notes)) ? $brand->notes : DUP_PRO_U::__('(no notes)'); ?> </div> <div> <label><?php DUP_PRO_U::esc_html_e('Logo') ?>:</label> <?php echo $brand->logo ?> </div> <button type="button" class="button" onclick="DupPro.Settings.Brand.View('<?php echo $brand->id; ?>');"><?php DUP_PRO_U::esc_html_e('Close') ?></button> </td> </tr> <?php endforeach; $display_brand_list = ob_get_clean(); // save generated list into string ?> <!-- DEFAULT BRAND ITEM --> <tr id='main-view-<?php echo $brands[0]->id; ?>' class="brand-row"> <td> <input type="checkbox" disabled="disabled" /> </td> <td> <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><b><?php DUP_PRO_U::esc_html_e('Default'); ?></b></a> <div class="sub-menu"> <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><?php DUP_PRO_U::esc_html_e('View'); ?></a> | <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brands[0]->id; ?>');"><?php DUP_PRO_U::esc_html_e('Quick View'); ?></a> <?php if(!$is_default_active) : if(is_multisite()) { $activeUrl = network_admin_url("admin.php?page=duplicator-pro-settings&tab=package&sub=brand&made_active=true&id=" . $brands[0]->id, (DUP_PRO_U::is_ssl() ? 'https' : 'http')); } else { $activeUrl = get_admin_url(null, "admin.php?page=duplicator-pro-settings&tab=package&sub=brand&made_active=true&id=" . $brands[0]->id ); } ?>| <a href="<?php echo esc_attr($activeUrl); ?>" style="color:orangered;"> <?php DUP_PRO_U::esc_html_e('Set active'); ?> </a> <?php endif; ?> </div> </td> <td> <?php if($is_default_active) echo '<span class="fa fa-bolt fa-xs" style="color:green;"></span> '.DUP_PRO_U::__('Enabled'); ?> </td> </tr> <tr id="quick-view-<?php echo $brands[0]->id ?>" class="brand-detail"> <td colspan="3"> <b><?php DUP_PRO_U::esc_html_e('QUICK VIEW') ?></b> <br/> <div> <label><?php DUP_PRO_U::esc_html_e('Name') ?>:</label> <?php echo $brands[0]->name ?> </div> <div> <label><?php DUP_PRO_U::esc_html_e('Notes') ?>:</label> <?php echo (strlen($brands[0]->notes)) ? $brands[0]->notes : DUP_PRO_U::__('(no notes)'); ?> </div> <div> <label><?php DUP_PRO_U::esc_html_e('Logo') ?>:</label> <?php echo $brands[0]->logo ?> </div> <button type="button" class="button" onclick="DupPro.Settings.Brand.View('<?php echo $brands[0]->id; ?>');"><?php DUP_PRO_U::esc_html_e('Close') ?></button> </td> </tr> <!-- END DEFAULT BRAND ITEM --> <!-- DYNAMIC BRAND ITEMS --> <?php echo $display_brand_list; ?> <!-- END DYNAMIC BRAND ITEMS --> </tbody> <tfoot> <tr> <th colspan="8" style="text-align:right; font-size:12px"> <?php echo DUP_PRO_U::__('Total') . ': ' . $brand_count; ?> </th> </tr> </tfoot> </table> </form> </div> <!-- ========================================== THICK-BOX DIALOGS: --> <?php $alert1 = new DUP_PRO_UI_Dialog(); $alert1->title = DUP_PRO_U::__('Bulk Action Required'); $alert1->message = DUP_PRO_U::__('Please select an action from the "Bulk Actions" drop down menu!'); $alert1->initAlert(); $alert2 = new DUP_PRO_UI_Dialog(); $alert2->title = DUP_PRO_U::__('Selection Required'); $alert2->message = DUP_PRO_U::__('Please select at least one brand to delete!'); $alert2->initAlert(); $confirm1 = new DUP_PRO_UI_Dialog(); $confirm1->title = DUP_PRO_U::__('Delete Brand?'); $confirm1->message = DUP_PRO_U::__('Are you sure you want to delete the selected brand(s)?'); $confirm1->message .= '<br/>'; $confirm1->message .= DUP_PRO_U::__('<small><i>Note: This action removes all brands.</i></small>'); $confirm1->progressText = DUP_PRO_U::__('Removing Brands, Please Wait...'); $confirm1->jsCallback = 'DupPro.Settings.Brand.BulkDelete()'; $confirm1->initConfirm(); $confirm2 = new DUP_PRO_UI_Dialog(); $confirm2->title = DUP_PRO_U::__('Delete Brand?'); $confirm2->message = DUP_PRO_U::__('Are you sure you want to delete the selected brand(s)?'); $confirm2->progressText = DUP_PRO_U::__('Removing Brands, Please Wait...'); $confirm2->jsCallback = 'DupPro.Settings.Brand.DeleteThis(this)'; $confirm2->initConfirm(); $delete_nonce = wp_create_nonce('duplicator_pro_brand_delete'); ?> <script> jQuery(document).ready(function ($) { //Shows detail view DupPro.Settings.Brand.AddNew = function() { document.location.href = '<?php echo "{$brand_edit_url}&action=new"; ?>'; } DupPro.Settings.Brand.Edit = function (id) { if (id == 0) { document.location.href = '<?php echo "{$brand_edit_url}&action=default&id="; ?>' + id; } else { document.location.href = '<?php echo "{$brand_edit_url}&action=edit&id="; ?>' + id; } } //Shows detail view DupPro.Settings.Brand.View = function (id) { $('#quick-view-' + id).toggle(); $('#main-view-' + id).toggle(); } //Delets a single record DupPro.Settings.Brand.Delete = function (id) { <?php $confirm2->showConfirm(); ?> $("#<?php echo $confirm2->getID(); ?>-confirm").attr('data-id', id); } DupPro.Settings.Brand.DeleteThis = function(e) { var id = $(e).attr('data-id'); jQuery("#dup-brand-form-action").val('delete'); jQuery("#dup-selected-brand").val(id); jQuery("#dup-brand-form").submit() } // Creats a comma seperate list of all selected package ids DupPro.Settings.Brand.DeleteList = function () { var arr = []; $("input[name^='selected_id[]']").each(function(i, index) { var $this = $(index); if ($this.is(':checked')==true) { arr[i] = $this.val(); } }); return arr; } // Bulk delete DupPro.Settings.Brand.BulkDelete = function () { var list = DupPro.Settings.Brand.DeleteList(); var pageCount = $('#current-page-selector').val(); var pageItems = $("input[name^='selected_id[]']"); $.ajax({ type: "POST", url: ajaxurl, dataType: "json", data: { action: 'duplicator_pro_brand_delete', brand_ids: list, nonce: '<?php echo $delete_nonce; ?>' }, }).done(function(data) { $('#dup-brand-form').submit(); }); } // Confirm bulk action DupPro.Settings.Brand.BulkAction = function () { var list = DupPro.Settings.Brand.DeleteList(); if (list.length == 0) { <?php $alert2->showAlert(); ?> return; } var action = $('#bulk_action').val(); var checked = ($('.item-chk:checked').length > 0); if (action != "delete") { <?php $alert1->showAlert(); ?> return; } if (checked) { switch (action) { default: <?php $alert2->showAlert(); ?> break; case 'delete': <?php $confirm1->showConfirm(); ?> break; } } } //Sets all for deletion DupPro.Settings.Brand.SetAll = function (chkbox) { $('.item-chk').each(function () { this.checked = chkbox.checked; }); } //Name hover show menu $("tr.brand-row").hover( function () { $(this).find(".sub-menu").show(); }, function () { $(this).find(".sub-menu").hide(); } ); }); </script>