PHP Classes
elePHPant
Icontem

File: src/Cabin/Bridge/public/skyport.js

Recommend this page to a friend!
  Classes of Scott Arciszewski  >  CMS Airship  >  src/Cabin/Bridge/public/skyport.js  >  Download  
File: src/Cabin/Bridge/public/skyport.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: CMS Airship
Content management system with security features
Author: By
Last change: CSRF rework: Now include AJAX tokens.
Merge pull request #112 from UmeshAawte/master

No need of border if using shadow
Date: 1 year ago
Size: 8,329 bytes
 

Contents

Class file image Download
/**
 * CMS Airship - Skyport
 */
var skyport = {
    /* Properties */
    "lastAjaxPage": [null, null], // For updating the search query
    "page": null,                 // Current page number
    "prefix": "",                 // Cabin URL prefix
    "query": "",                  // Search Query
    "timeout": 900000,            // 900 seconds = 15 minutes

    /* Methods */
    "handleLeftLink": function() {
        var el = $(this);
        var action = $(this).data('id') || null;
        var type = $(this).data('type') || null;
        skyport.page = null;
        return skyport.loadAjaxPage(action, type);
    },

    "handleSearchChange": function() {
        skyport.query = $(this).val();
        if (skyport.lastAjaxPage[0] === 'browse') {
            skyport.loadAjaxPage(
                skyport.lastAjaxPage[0],
                skyport.lastAjaxPage[1]
            );
        }
        console.log(skyport.query);
    },

    "init": function() {
        skyport.prefix = $("#bridge_main_menu_left").data('linkprefix');
        skyport.setupLeftLinks();
    },

    "installPackage": function(type, supplier, pkg) {
        var password = arguments[3] || null;
        $.post(
            skyport.prefix + 'admin/skyport/install',
            {
                "type": type,
                "supplier": supplier,
                "package": pkg,
                "password": password,
                "csrf_token": $("body").data('ajaxtoken')
            },
            function (response) {
                if (response.status === 'PROMPT') {
                    return skyport.installPasswordPrompt(type, supplier, pkg);
                } else if (response.status === 'ERROR') {
                    alert(response.message);
                }
                // Otherwise, we assume we're doing fine.
                skyport.viewPackage(type, supplier, pkg);
            }
        );
    },

    "installPasswordPrompt": function(type, supplier, pkg) {
        var password = prompt("Please enter the password to unlock the Skyport");
        if (!password) {
            return false;
        }
        return skyport.installPackage(type, supplier, pkg, password);
    },

    "loadAjaxPage": function(which, type) {
        var args = {};
        if (type !== null) {
            args["type"] = type;
        }
        if (skyport.query.length > 1) {
            // Search query
            args["query"] = skyport.query;
        }
        if (skyport.page !== null) {
            // Page number
            args["page"] = skyport.page;
        }
        args["csrf_token"] = $("body").data('ajaxtoken');

        $.post(
            skyport.prefix + 'ajax/admin/skyport/' + which,
            args,
            function (html) {
                skyport.lastAjaxPage = [which, type];
                $("#skyport-main").html(html);
                skyport.setupPageChangeEvents();
            }
        );
    },

    "refreshLeftMenu": function() {
        $.get(
            skyport.prefix + 'ajax/admin/skyport/leftmenu',
            {},
            function (html) {
                $("#skyport-left").html(html);
                skyport.setupLeftLinks();
                setTimeout(skyport.refreshLeftMenu, skyport.timeout);
            }
        );
    },

    "refreshPackageInfo": function(type, supplier, pkg) {
        $.post(
            skyport.prefix + "ajax/admin/skyport/refresh",
            {
                "type": type,
                "supplier": supplier,
                "package": pkg,
                "csrf_token": $("body").data('ajaxtoken')
            },
            function(response) {
                if (response.status == "OK") {
                    skyport.viewPackage(type, supplier, pkg);
                }
            }
        );
    },

    "removePackage": function(type, supplier, pkg) {
        var password = arguments[3] || null;
        $.post(
            skyport.prefix + 'admin/skyport/remove',
            {
                "type": type,
                "supplier": supplier,
                "package": pkg,
                "password": password,
                "csrf_token": $("body").data('ajaxtoken')
            },
            function (response) {
                if (response.status === 'PROMPT') {
                    return skyport.removePasswordPrompt(type, supplier, pkg);
                } else if (response.status === 'ERROR') {
                    alert(response.message);
                }
                // Otherwise, we assume we're doing fine.
                skyport.viewPackage(type, supplier, pkg);
            }
        );
    },

    "removePasswordPrompt": function(type, supplier, pkg) {
        var password = prompt("Please enter the password to unlock the Skyport");
        if (!password) {
            return false;
        }
        return skyport.removePackage(type, supplier, pkg, password);
    },

    "setupLeftLinks": function() {
        $(".skyport-left-link").on('click', skyport.handleLeftLink);
        $("#skyport-search").on('change', skyport.handleSearchChange);
    },

    "setupPageChangeEvents": function() {
        $(".skyport-page").on('click', function() {
            skyport.page = $(this).data('page');
            skyport.loadAjaxPage(
                skyport.lastAjaxPage[0],
                skyport.lastAjaxPage[1]
            );
        });
        $(".skyport-package-link").on('click', function() {
            skyport.viewPackage(
                $(this).data('type'),
                $(this).data('supplier'),
                $(this).data('package')
            )
        });
        $("#skyport-install").on('click', function() {
            skyport.installPackage(
                $(this).data('type'),
                $(this).data('supplier'),
                $(this).data('package')
            )
        });
        $("#skyport-uninstall-button").on('click', function() {
            skyport.removePackage(
                $(this).data('type'),
                $(this).data('supplier'),
                $(this).data('package')
            )
        });
        $("#skyport-upgrade-button").on('click', function() {
            skyport.updatePackage(
                $(this).data('type'),
                $(this).data('supplier'),
                $(this).data('package'),
                $("#skyport-upgrade-version").val()
            )
        });
        $("#skyport-refresh-package").on('click', function() {
            skyport.refreshPackageInfo(
                $(this).data('type'),
                $(this).data('supplier'),
                $(this).data('package')
            )
        });
    },

    "updatePackage": function(type, supplier, pkg, version) {
        if (!version) {
            return;
        }
        $.post(
            skyport.prefix + 'admin/skyport/update',
            {
                "type": type,
                "supplier": supplier,
                "package": pkg,
                "version": version,
                "csrf_token": $("body").data('ajaxtoken')
            },
            function (response) {
                if (response.status === 'ERROR') {
                    alert(response.message);
                }
                // Otherwise, we assume we're doing fine.
                skyport.viewPackage(type, supplier, pkg);
            }
        );
    },

    "viewPackage": function(type, supplier, pkg) {
        $.post(
            skyport.prefix + "ajax/admin/skyport/view",
            {
                "type": type,
                "supplier": supplier,
                "package": pkg,
                "csrf_token": $("body").data('ajaxtoken')
            },
            function(html) {
                $("#skyport-main").html(html);
                skyport.setupPageChangeEvents();
            }
        );
    }
};

$(document).ready(function() {
    skyport.init();
    skyport.loadAjaxPage("installed");
    setTimeout(skyport.refreshLeftMenu, skyport.timeout);

    $(".js-update-log-toggle").on("click", function() {
        var toggleText = $(this).attr("data-toggle-text");
        $(this).attr("data-toggle-text", $(this).text());
        $(this).text(toggleText);

        // Toggle next row in table that contains the extended info
        $(this).parent().parent().next().toggleClass("update-log-hidden");
    });
});