Here is my code:

/**
 * Page template part setup div
 */
(function(jQ){
        /**
         * form state
         */
        var STATE = "new";
        /**
         * Request URL
         */
        var RequestUrl = rootUrl+"/aranAjx.php?mod=pages";
        /**
         * indicator if there is one form is open
         */
        var formOpen = false;
        /**
         * Actions
         */
        var MODULE_LIST = "act=modules";
        /**
         * Load image object
         */
        var loadImgObj = jQ("<img></img>").attr("id", "stdLoadImg").attr
("src", jQ.STD_LOAD_IMG);
        /**
         * Object of template part form
         */
        var PartObj = null;
        /**
         * HTML select object of availble options
         */
        var ModulesListObj = null;

        /**
         * Events
         */
        var OnBeforeSend = function(){
                jQ(this).append(loadImgObj);
        };
        var OnSuccess = function(data){
                //parse the data
                if(data['status'] == "OK"){
                        ShowFormMessage(data['body']['message']);
                        //change tha action to edit
                        jQ("#action").val("edit");
                        jQ("#tplName").attr("readonly", "readonly");
                } else if(data['status'] == "FAIL"){
                        ShowFormError(data['reason']);
                }
        };
        var OnSuccessGetMosules = function(data){
                //parse the data
                if(data['status'] == "OK"){
                        var modules = data['body']['modules'];
                        ModulesListObj = 
jQ("<select></select>").change(OnModuleSelect);
                        jQ.each(modules, function(i, module){
                                        jQ("<option></option>").attr("value", 
module.modeCode).text
(module.name).appendTo(ModulesListObj);
                                });
                        ModulesListObj.insertBefore(loadImgObj);
                } else if(data['status'] == "FAIL"){
                        ShowFormError(data['reason']);
                }
        };
        var OnError = function(txt){
                ShowFormError("Fatal error during request: "+txt);
        };
        var OnComplete = function(){
                jQ(loadImgObj, this).remove();
        };
        /**
         * init part
         */
        jQ.fn.PartInit = function(){
                if(formOpen){
                        return;
                }
                if(!jQ(this).is("div")){
                        $.log("Template part form must be 'DIV' element!");
                }
                PartObj = this;
                if(STATE == "edit"){

                } else if (STATE == "new"){
                        //send the reauest for module list first.
                        var options = {
                                url: RequestUrl,
                                data: MODULE_LIST
                        };
                        //bind events
                        this.onBeforeSend = OnBeforeSend;
                        this.onError = OnError;
                        this.onComplete = OnComplete;
                        this.onSuccess = OnSuccessGetMosules;

                        //send ajax request
                        jQ(this).ijajax(options, this);
                        return jQ(this);
                }

        }
        /**
         * Module selection event handler
         */
        var OnModuleSelect = function(){
                alert(jQ("option:selected", ModulesListObj).val());
        };
        /**
         * Show form error
         */
        var ShowFormError = function(err){
                jQ("<div></div>").addClass("araneumErrDiv").text(err).prependTo
("#tplPartsContainer");
        };

        /**
         * Show form message
         */
        var ShowFormMessage = function(mess){
                
jQ("<div></div>").addClass("araneumMessDiv").text(mess).prependTo
("#tplPartsContainer");
        };
        /**
         * remove error and message divs
         */
        var RemoveErrorMessage = function(){
                jQ(".araneumMessDiv,.araneumErrDiv").remove();
        };
})(jQuery)

Reply via email to