(function($) { $.makeJson = function(selector, options) { var result = new Array(); var settings = $.extend({ filter : '*', json : undefined, childNodes: undefined, returnTo : 'LIST', duplicate : 'LIST', /* 중복된 KEY 처리('SET'=유일성을 보장하는 리스트, 'LIST'=유일성을 보장하지 않는 리스트, 'CHANGE'= 최종 입력되는 값을 사용). */ ignoreEmpty : true, useSelectValue : true }, options||{}); var elements = $(selector); for(var indexOfElements = 0; indexOfElements < elements.size(); indexOfElements++) { var data = {}; var element = elements.get(indexOfElements); var targetElements = $(element).find(settings.filter).add(element); for(var indexOfTargetElements = 0; indexOfTargetElements < targetElements.size(); indexOfTargetElements++) { var targetElement = $(targetElements.get(indexOfTargetElements)); var _data = targetElement.metadata()||{}; if(targetElement.is('*[name]:input:not(:button)' + (settings.json ? ', ' + settings.json : ''))) { var name = targetElement.attr('name')||targetElement.attr('title'); var value = targetElement.fieldValue()[0]; if(targetElement.is(':checkbox') && name != undefined && name != '' && name != null) { _data[name] = value != undefined ? (value == 'on' || value) : targetElement.attr('checked'); } else if(targetElement.is(':input') && name != undefined && name != '' && name != null){ _data[name] = value; } else if(name != undefined && name != '' && name != null){ _data[name] = targetElement.text(); } } switch(settings.duplicate) { case 'LIST' : for(key in _data) { if(typeof data[key] == 'undefined') { if(settings.ignoreEmpty || _data[key]) { data[key] = _data[key]; } } else if(!$.isArray(data[key])) { if(settings.ignoreEmpty || _data[key]) { data[key] = $.makeArray(data[key]); data[key].push(_data[key]); } } else { if(settings.ignoreEmpty || _data[key]) { data[key].push(_data[key]); } } }; break; case 'SET' : for(key in _data) { if(typeof data[key] == 'undefined') { if(settings.ignoreEmpty || _data[key]) { data[key] = _data[key]; } } else if(!$.isArray(data[key])) { if(settings.ignoreEmpty || _data[key]) { data[key] = $.makeArray(data[key]); data[key].push(_data[key]); } } else if((matchIndex = $.inArray(data[key], _data[key])) >= 0) { if(settings.ignoreEmpty || _data[key]) { data[key][matchIndex] = _data[key]; } } else { if(settings.ignoreEmpty || _data[key]) { data[key].push(_data[key]); } } }; break; default : /** case 'CHANGE' : */ for(key in _data) { if(settings.ignoreEmpty || _data[key]) { if($.isArray(_data[key])) { for(var idx = 0; idx < _data[key].length; idx++) { if(settings.ignoreEmpty || _data[key][idx]) { data[key] = _data[key][idx]; } } } else { data[key] = _data[key]; } } } break; } } if(settings.childNodes) { for(var name in settings.childNodes) { var childNode = settings.childNodes[name]; data[name] = $.makeJson($(element).find(childNode.selector), childNode); } } result.push(data); } if(settings.returnTo == 'OBJECT') { if(result.length > 1) { return result[0]; } else { alert('"returnTo" settings "Object", but will return too many results'); return undefined; } } else { return result; } }; $.template = function(context, object) { var getMaps = function(object, key) { var result = new Array(); if(key == undefined) { for(_key in object) { _result = getMaps(object, _key); if($.isArray(_result)) { for(index in _result) { result.push(_result[index]); } } else { result.push(_result); } } return result; } else if(typeof object[key] == 'object') { for(_key in object[key]) { _result = getMaps(object[key], _key); if($.isArray(_result)) { for(index in _result) { _result[index].key = key + "." + _result[index].key; result.push(_result[index]); } } else { _result.key = key + "." + _result.key; result.push(_result); } } return result; } else if($.isFunction(object[key])) { return { key : key, value : object[key](object, key) }; } else { return { key : key, value : object[key] }; } }; if(typeof object == 'object') { var result = getMaps(object); for(index in result) { context = context.replace(new RegExp('\\$\\[\\s*'+result[index].key+'\\s*\\]','gim'), result[index].value); } } return context.replace(new RegExp('\\$\\[\\s*[^\\]]*\\s*\\]','gim'), ''); }; $.fn.template = function(object) { $.template(this.html(), object); return this; }; $.fn.tiny = function(options) { var target = $(this); if(target.size() > 0) { $.getScript('/script/jquery/tiny_mce/jquery.tinymce.js',function() { target.tinymce($.extend({ // Location of TinyMCE script script_url : '/script/jquery/tiny_mce/tiny_mce.js', mode : "textareas", // General options language : "ko", theme : "advanced", plugins : "safari,pagebreak,style,table,advimage,advlink,inlinepopups,preview,media,contextmenu,paste,directionality,noneditable,nonbreaking,xhtmlxtras", // Theme options theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect,code,preview", theme_advanced_buttons2 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,link,unlink,|,image", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, theme_advanced_resize_horizontal : false, theme_advanced_path : false, // Example content CSS (should be your site CSS) content_css : "/style/blank.css", convert_urls : false, execcommand_callback : function(editor_id, elm, command, user_interface, value) { return false; // Pass to next handler in chain }, file_browser_callback : function(field_name, url, type, win) { // alert("Field_Name: " + field_name + "\nURL: " + url + "\nType: " + type + "\nWin: " + win); // debug/testing return false; } }, options||{})); }); } return this; }; /** * SWFUpload v2 Documentation URL : http://demo.swfupload.org/Documentation/ * button_placeholder_id : 'element_id', * button_placeholder : element, * button_image_url : 'button_image_url', // normal, hover, down/click, disabled. * button_text : 'Click here', * button_text_style : '.redText { color: #FF0000; }', * button_text_top_padding : 0, * button_text_left_padding : 0, * post_params : { * post_param_name_1 : 'post_param_value_1', * post_param_name_2 : 'post_param_value_2', * post_param_name_n : 'post_param_value_n' * }, * custom_settings : { * custom_setting_1 : 'custom_setting_value_1', * custom_setting_2 : 'custom_setting_value_2', * custom_setting_n : 'custom_setting_value_n' * }, * flash_ready_handler : function() {}, * swfupload_loaded_handler : function() {}, * file_dialog_start_handler : function() {}, * file_queued_handler : function(file_object) {}, * file_queue_error_handler : function(file_object, error_code, message) {}, * file_dialog_complete_handler : function(number_of_files_selected, number_of_files_queued, total_number_of_files_in_the_queued) {}, * upload_start_handler : function(file_object) {}, * upload_progress_handler : function(file_object, bytes_complete, total_bytes) {}, * upload_error_handler : function(file_object, error_code, message) {}, * upload_success_handler : function(file_object, server_data, received_response) {}, * upload_complete_handler : function(file_object) {}, * debug_handler : function(message) {} */ $.fn.swfupload = function(options) { var settings = $.extend({ upload_url : '/upload.do', flash_url : '/script/swfupload/swfupload.swf', file_post_name : 'Filedata', use_query_string : true, requeue_on_error : false, http_success : [201, 200], assume_success_timeout : 0, file_types : '*.gif;*.jpg;*.png', file_types_description : 'Web Image Files...', file_size_limit : '0', file_upload_limit : 10, file_queue_limit : 2, prevent_swf_caching : false, preserve_relative_urls : false, debug : false, button_image_url : '/resource/images/btn/fileup.gif', button_width : 67, button_height : 21, button_action : SWFUpload.BUTTON_ACTION.SELECT_FILE, button_disabled : false, button_cursor : SWFUpload.CURSOR.HAND, button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT }, options||{}); var list = new Array(); this.each(function(index, element) { list[element.id] = new SWFUpload($.extend(settings, { button_placeholder_id : element.id })); }); return list; }; })(jQuery);