<?php
defined("ABSPATH") or die("");

use Duplicator\Addons\ProBase\License\License;
use Duplicator\Core\Controllers\ControllersManager;
use Duplicator\Models\BrandEntity;

$brand_list_url = ControllersManager::getCurrentLink(array('view' => 'list'));
$brand_edit_url = ControllersManager::getCurrentLink(array('view' => 'edit'));

if (!empty($_REQUEST['action'])) {
    //check_admin_referer(Duplicator\Controllers\SettingsPageController::NONCE_ACTION);

    $action = $_REQUEST['action'];
    switch ($action) {
        case 'bulk-delete':
            $brand_ids = $_REQUEST['selected_id'];
            foreach ($brand_ids as $brand_id) {
                BrandEntity::deleteById($brand_id);
            }
            break;

        case 'delete':
            $brand_id = (int) $_REQUEST['brand_id'];
            BrandEntity::deleteById($brand_id);
            break;
    }
}

$brands      = BrandEntity::getAllWithDefault();
$brand_count = count($brands);
?>

<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 (License::can(License::CAPABILITY_BRAND) ? "style='display:none'" : ""); ?>>
    <h2><?php esc_html_e("Installer Branding", 'duplicator-pro') ?></h2>
    <hr size="1"/>

    <div style="width:850px">
        <?php
        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).",
            'duplicator-pro'
        );
        ?>
        <br/><br/>
        <?php
            printf(
                __(
                    'This option isn\'t available at the <b>%1$s</b> license level.',
                    'duplicator-pro'
                ),
                License::getLicenseToString()
            );
            ?>
        <b>
        <?php
            printf(
                _x(
                    'To enable this option %1$supgrade%2$s the License.',
                    '%1$s and %2$s represents the opening and closing HTML tags for an anchor or link',
                    'duplicator-pro'
                ),
                '<a href="' . esc_url(License::getUpsellURL()) . '" target="_blank">',
                '</a>'
            );
            ?>
        </b>
    </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 (License::can(License::CAPABILITY_BRAND) ? "" : "style='display:none'"); ?>>
    <table class="dpro-edit-toolbar">
        <tr>
            <td>
                <select id="bulk_action">
                    <option value="-1" selected="selected"><?php _e('Bulk Actions', 'duplicator-pro'); ?></option>
                    <option value="delete" title="<?php esc_attr_e('Delete selected brand endpoint(s)', 'duplicator-pro'); ?>"><?php _e('Delete', 'duplicator-pro'); ?></option>
                </select>
                <input type="button" class="button action" value="<?php esc_html_e("Apply", 'duplicator-pro') ?>" onclick="DupPro.Settings.Brand.BulkAction()">
            </td>
            <td>
                <div class="btnnav">
                    <a href="javascript:void(0)" onclick="DupPro.Settings.Brand.AddNew()" class="button"><?php esc_html_e('Add New', 'duplicator-pro'); ?></a>
                </div>
            </td>
        </tr>
    </table>

    <form id="dup-brand-form" action="<?php echo $brand_list_url; ?>" method="post">
        <?php wp_nonce_field(Duplicator\Controllers\SettingsPageController::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:100%;'><?php esc_html_e('Name', 'duplicator-pro'); ?></th>
                </tr>
            </thead>
            <tbody>
                <?php
                ob_start(); // Must transfer data after default brand item
                $i = 0;
                foreach ($brands as $x => $brand) :
                    if ($x === 0) {
                        continue; // remove default item in list because is defined out of loop below
                    }
                    $i++;

                    //$brand_type = $brand->getModeText();
                    ?>
                    <tr id='main-view-<?php echo $brand->getId() ?>' class="brand-row<?php echo ($i % 2) ? ' alternate' : ''; ?>">
                        <td>
                            <?php if ($brand->editable) : ?>
                                <input name="selected_id[]" type="checkbox" value="<?php echo $brand->getId(); ?>" 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->getId(); ?>')"><b><?php echo esc_html($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->getId(); ?>')"><?php esc_html_e('Edit', 'duplicator-pro') ?></a> |
                                    <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brand->getId(); ?>');"><?php esc_html_e('Quick View', 'duplicator-pro') ?></a> |
                                    <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Delete('<?php echo $brand->getId(); ?>');"><?php esc_html_e('Delete', 'duplicator-pro') ?></a>
                                </div>
                            <?php else : ?>
                                <div class="sub-menu">
                                    <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><?php esc_html_e('View', 'duplicator-pro') ?></a> |
                                    <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brand->getId(); ?>');"><?php esc_html_e('Quick View', 'duplicator-pro') ?></a>
                                </div>
                            <?php endif; ?>
                        </td>
                    </tr>
                    <tr id='quick-view-<?php echo $brand->getId() ?>' class='<?php echo ($i % 2) ? 'alternate ' : ''; ?>brand-detail'>
                        <td colspan="3">
                            <b><?php esc_html_e('QUICK VIEW', 'duplicator-pro') ?></b> <br/>
                            <div>
                                <label><?php esc_html_e('Name', 'duplicator-pro') ?>:</label>
                                <?php echo esc_html($brand->name); ?>
                            </div>
                            <div>
                                <label><?php esc_html_e('Notes', 'duplicator-pro') ?>:</label>
                                <?php echo (strlen($brand->notes)) ? esc_html($brand->notes) : __('(no notes)', 'duplicator-pro'); ?>
                            </div>
                            <div>
                                <label><?php esc_html_e('Logo', 'duplicator-pro') ?>:</label>
                                <?php echo $brand->logo ?>
                            </div>
                            <button type="button" class="button" onclick="DupPro.Settings.Brand.View('<?php echo $brand->getId(); ?>');"><?php esc_html_e('Close', 'duplicator-pro') ?></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]->getId(); ?>' class="brand-row">
                    <td>
                        <input type="checkbox" disabled="disabled" />
                    </td>
                    <td>
                        <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><b><?php esc_html_e('Default', 'duplicator-pro'); ?></b></a>
                        <div class="sub-menu">
                            <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.Edit(0)"><?php esc_html_e('View', 'duplicator-pro'); ?></a> |
                            <a href="javascript:void(0);" onclick="DupPro.Settings.Brand.View('<?php echo $brands[0]->getId(); ?>');"><?php esc_html_e('Quick View', 'duplicator-pro'); ?></a>
                        </div>
                    </td>
                </tr>
                <tr id="quick-view-<?php echo $brands[0]->getId() ?>" class="brand-detail">
                    <td colspan="3">
                        <b><?php esc_html_e('QUICK VIEW', 'duplicator-pro') ?></b> <br/>
                        <div>
                            <label><?php esc_html_e('Name', 'duplicator-pro') ?>:</label>
                            <?php echo $brands[0]->name ?>
                        </div>
                        <div>
                            <label><?php esc_html_e('Notes', 'duplicator-pro') ?>:</label>
                            <?php echo (strlen($brands[0]->notes)) ? $brands[0]->notes : __('(no notes)', 'duplicator-pro'); ?>
                        </div>
                        <div>
                            <label><?php esc_html_e('Logo', 'duplicator-pro') ?>:</label>
                            <?php echo $brands[0]->logo ?>
                        </div>
                        <button type="button" class="button" onclick="DupPro.Settings.Brand.View('<?php echo $brands[0]->getId(); ?>');"><?php esc_html_e('Close', 'duplicator-pro') ?></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 __('Total', 'duplicator-pro') . ': ' . $brand_count; ?>
                    </th>
                </tr>
            </tfoot>
        </table>
    </form>
</div>
<!-- ==========================================
THICK-BOX DIALOGS: -->
<?php
$alert1          = new DUP_PRO_UI_Dialog();
$alert1->title   = __('Bulk Action Required', 'duplicator-pro');
$alert1->message = __('Please select an action from the "Bulk Actions" drop down menu!', 'duplicator-pro');
$alert1->initAlert();

$alert2          = new DUP_PRO_UI_Dialog();
$alert2->title   = __('Selection Required', 'duplicator-pro');
$alert2->message = __('Please select at least one brand to delete!', 'duplicator-pro');
$alert2->initAlert();

$confirm1               = new DUP_PRO_UI_Dialog();
$confirm1->title        = __('Delete Brand?', 'duplicator-pro');
$confirm1->message      = __('Are you sure you want to delete the selected brand(s)?', 'duplicator-pro');
$confirm1->message     .= '<br/>';
$confirm1->message     .= '<small><i>' . __('Note: This action removes all brands.', 'duplicator-pro') . '</i></small>';
$confirm1->progressText = __('Removing Brands, Please Wait...', 'duplicator-pro');
$confirm1->jsCallback   = 'DupPro.Settings.Brand.BulkDelete()';
$confirm1->initConfirm();

$confirm2               = new DUP_PRO_UI_Dialog();
$confirm2->title        = __('Delete Brand?', 'duplicator-pro');
$confirm2->message      = __('Are you sure you want to delete the selected brand(s)?', 'duplicator-pro');
$confirm2->progressText = __('Removing Brands, Please Wait...', 'duplicator-pro');
$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>
