HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/HKemperman1/osthoes.nl/wwwroot/DesktopModules/OpenContent/js/alpacaengine.js
if (typeof alpacaEngine === 'undefined' || alpacaEngine === null) {
    alpacaEngine = {};
};

alpacaEngine.engine = function(config) {
    var self = this;
    self.defaultCulture = config.defaultCulture;
    self.currentCulture = config.currentCulture;
    self.numberDecimalSeparator = config.numberDecimalSeparator;
    self.alpacaCulture = config.alpacaCulture;
    self.moduleId = config.moduleId;
    self.itemId = config.itemId;
    self.cancelButton = config.cancelButtonID;
    self.saveButton = config.saveButtonID;
    self.deleteButton = config.deleteButtonID;
    self.scopeWrapper = config.scopeWrapperID;
    self.ddlVersions = config.versionsID;
    self.editAction = "Edit";
    self.updateAction = "Update";
    self.deleteAction = "Delete";
    self.data = {};
    self.rootUrl = config.appPath;
    self.bootstrap = config.bootstrap;
    self.view = "dnn-edit";
    if (config.bootstrap) {
        self.view = config.horizontal ? "dnnbootstrap-edit-horizontal" : "dnnbootstrap-edit";
    }
    if (config.bootstrap && $.fn.select2) {
        $.fn.select2.defaults.set("theme", "bootstrap");
    }
    if (config.editAction) {
        self.editAction = config.editAction;
    }
    if (config.updateAction) {
        self.updateAction = config.updateAction;
    }
    if (config.deleteAction) {
        self.deleteAction = config.deleteAction;
    }
    if (config.data) {
        self.data = config.data;
    }
    if (config.itemId) {
        self.data.id = config.itemId;
    }
    self.init = function () {
        var windowTop = parent;
        var popup = windowTop.jQuery("#iPopUp");
        if (popup.length) {

            var $window = $(windowTop),
                            newHeight,
                            newWidth;

            newHeight = $window.height() - 36;
            newWidth = Math.min($window.width() - 40, 1200);

            popup.dialog("option", {
                close: function () { window.dnnModal.closePopUp(false, ""); },
                //'position': 'top',
                height: newHeight,
                width: newWidth,
                minWidth: newWidth,
                minHeight: newHeight,
                //position: 'center'
                resizable: false,
            });

            $("div.alpaca").parent().addClass('popup');
            

            $("#"+self.cancelButton).click(function () {
                dnnModal.closePopUp(false, "");
                return false;
            });
        }
        if (!self.itemId) {
            $("#"+self.deleteButton).hide();
        }

        $("#"+self.deleteButton).click(function () {

            var postData = JSON.stringify({ id: self.itemId });
            //var action = "Delete";
            $.ajax({
                type: "POST",
                url: self.sf.getServiceRoot('OpenContent') + "OpenContentAPI/" + self.deleteAction,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: postData,
                beforeSend: self.sf.setModuleHeaders
            }).done(function (data) {
                
                var href = $("#"+self.saveButton).attr('href');
                var windowTop = parent; //needs to be assign to a varaible for Opera compatibility issues.
                var popup = windowTop.jQuery("#iPopUp");
                if (popup.length > 0) {
                    windowTop.__doPostBack('dnn_ctr'+self.moduleId+'_View__UP', '');
                    //dnnModal.closePopUp(false, href);
                    dnnModal.closePopUp(false, "");
                }
                else {
                    window.location.href = href;
                }
            }).fail(function (xhr, result, status) {
                alert("Uh-oh, something broke: " + status);
            });
            return false;
        });
        

        //var moduleScope = $('#'+self.scopeWrapper),
            //self = moduleScope,
        //sf = $.ServicesFramework(self.moduleId);

        self.sf = $.ServicesFramework(self.moduleId);

        var postData = {};
        var getData = "";
        //var action = "Edit";
        if (self.itemId) getData = "id=" + self.itemId;
        
        $.ajax({
            type: "GET",
            url: self.sf.getServiceRoot('OpenContent') + "OpenContentAPI/" + self.editAction,
            data: self.data,
            beforeSend: self.sf.setModuleHeaders
        }).done(function (config) {

            /*
            oc_loadmodules(config.options, function () {
                self.FormEdit(config);
            });
            */
            self.FormEdit(config);

        }).fail(function (xhr, result, status) {
            alert("Uh-oh, something broke: " + status);
        });
    }
   
    self.FormEdit = function (config) {
        var ConnectorClass = Alpaca.getConnectorClass("default");
        var connector = new ConnectorClass("default");
        connector.servicesFramework = self.sf;
        connector.culture = self.currentCulture;
        connector.defaultCulture = self.defaultCulture;
        connector.numberDecimalSeparator = self.numberDecimalSeparator;
        connector.rootUrl = self.rootUrl;
        if (config.versions) {
            $.each(config.versions, function (i, item) {
                $("#"+self.ddlVersions).append($('<option>', {
                    value: item.ticks,
                    text: item.text
                }));
                //$("#<%=ddlVersions.ClientID%>").data(item.CreatedOnDate, item.Json);
            });
        } else {
            $("#"+self.ddlVersions).hide();
        }

        $.alpaca.setDefaultLocale(self.alpacaCulture);
        self.CreateForm(connector, config, config.data);

    };

    self.CreateForm = function (connector, config, data) {

        $("#field1").alpaca({
            "schema": config.schema,
            "options": config.options,
            "data": data,
            "view": config.view ? config.view : self.view,
            "connector": connector,
            "postRender": function (control) {
                var selfControl = control;
                $("#"+self.saveButton).click(function () {
                    selfControl.refreshValidationState(true);
                    if (selfControl.isValid(true)) {
                        var value = selfControl.getValue();
                        //alert(JSON.stringify(value, null, "  "));
                        var href = $(this).attr('href');
                        self.FormSubmit(value, href);
                    }
                    return false;
                });

                $("#"+self.ddlVersions).change(function () {
                    //var versions = config.versions;
                    //var ver = $("#<%=ddlVersions.ClientID%>").data($(this).val());
                    //$("#field1").empty();
                    //$("#<%=cmdSave.ClientID%>").off("click");
                    //self.CreateForm(connector, config, ver);
                    //selfControl.setValue(ver);
                    self.Version(self.itemId, $(this).val(), control);
                    return false;
                });

            }
        });

    };

    self.FormSubmit = function (data, href) {
        var postData = JSON.stringify($.extend({ form: data }, self.data));
        //var postData = JSON.stringify({ form: data, id: self.itemId });
        //var action = "Update"; //self.getUpdateAction();

        $.ajax({
            type: "POST",
            url: self.sf.getServiceRoot('OpenContent') + "OpenContentAPI/" + self.updateAction,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: postData,
            beforeSend: self.sf.setModuleHeaders
        }).done(function (data) {
            //alert('ok:' + data);
            //self.loadSettings();
            //window.location.href = href;

            var windowTop = parent; //needs to be assign to a varaible for Opera compatibility issues.
            var popup = windowTop.jQuery("#iPopUp");
            if (popup.length > 0) {
                windowTop.__doPostBack('dnn_ctr'+self.moduleId+'_View__UP', '');
                dnnModal.closePopUp(false, href);
            }
            else {
                window.location.href = href;
            }
        }).fail(function (xhr, result, status) {
            alert("Uh-oh, something broke: " + status);
        });
    };

    self.Version = function (id, ticks, control) {
        if (!id) id = "";
        var postData = { id: id, ticks: ticks };
        var action = "Version";

        $.ajax({
            type: "GET",
            url: self.sf.getServiceRoot('OpenContent') + "OpenContentAPI/" + action,
            //contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: postData,
            beforeSend: self.sf.setModuleHeaders
        }).done(function (data) {
            //alert('ok:' + data);
            control.setValue(data);
        }).fail(function (xhr, result, status) {
            alert("Uh-oh, something broke: " + status);
        });
    };

};