class WebController < ApplicationController include RJBM::JAccess j_import('mx.org.pescador.krcontroller.KRController', 'mx.org.pescador.krmodel.KRModel', 'mx.org.pescador.krview.baseviewelements.BaseViewElementType', 'mx.org.pescador.krview.ViewObjManager') # add here any model declarations needed # here is another really awful hack NIL_OBJ_STR = "nil_obj" #INITIAL_SOC_LOCAL_URI_PART = "main_level_socs" #INITIAL_SOC = "soc_photographic_prints_23" #INITIAL_SOC_ABBREV = "rep" RESPONSE_DELAY = 0 def ui end def catalogo end # TODO: controlar por errores o ausencia en los parámetros de la solicitud HTTP def new_ordered_desc_list abbrev = params['abbrev'] abbrev ||= initial_soc_abbrev local_part = params['local_part'] local_part ||= initial_soc_local_uri_part order = params['order'] add_fields = params['add_fields'] add_fields = add_fields.split(",") if (add_fields) remove_fields = params['remove_fields'] remove_fields = remove_fields.split(",") if (remove_fields) env = KRModel.testDescEnv if (order) request = KRController.newOrderedDescListRequest(abbrev, local_part, env, order, add_fields, remove_fields) else request = KRController.newOrderedDescListRequest(abbrev, local_part, env, add_fields, remove_fields) end ordered_list_response = KRController.submit(request) if(ordered_list_response.message.isOK) list = ordered_list_response.viewObjs[0] list_id = ViewObjManager.add(list) title_desc = ordered_list_response.viewObjs[1] @base_view_el_type = BaseViewElementType base_image_url = list.tmpListImageURLBase img = KRLogic::ImgFileManager.get(base_image_url) has_img = !(img == nil) title_desc_linking_html = render_to_string(:partial => "title_desc", :locals => { :desc => title_desc, :for_list => title_desc.dObj.isRepOrgGroup, :for_col_level => false, :base_image_url => base_image_url, :has_img => has_img, :abbrev => abbrev, :img => img, :local_uri_part => local_part }) summary = list.serializedSummary || NIL_OBJ_STR sObj = serialize_string_array([ list_id, list.size.to_s, list.singularTypeStr, list.orderOptStr.downcase, list.listTitle, list.isListOfCollections.to_s, abbrev, local_part, list.serializedOrderByTextBPVs, title_desc_linking_html, summary, list.serializedOrderOpts, list.serializedGroupingOpts, list.serializedFieldOpts, "false" ]) # CustomLogger.info(sObj) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => sObj) else # deal with no OK message end end # *****************************************VV def new_ordered_search_results query = params['q'] order = params['order'] add_fields = params['add_fields'] add_fields = add_fields.split(",") if (add_fields) remove_fields = params['remove_fields'] remove_fields = remove_fields.split(",") if (remove_fields) env = KRModel.testDescEnv if (order) request = KRController.newOrderedSearchResultRequest(query, env, order, add_fields, remove_fields) else request = KRController.newOrderedSearchResultRequest(query, env, add_fields, remove_fields) end ordered_list_response = KRController.submit(request) if(ordered_list_response.message.isOK) list = ordered_list_response.viewObjs[0] list_id = ViewObjManager.add(list) title_desc_linking_html = render_to_string(:partial => "search_title_desc", :locals => { :query => query, :size => list.size}) # title_desc_linking_html = "Búsqueda por " + query + "

" + # list.size.to_s + " resultado" + (list.size > 1 ? "s" : "") + # "::0" # title_desc = ordered_list_response.viewObjs[1] # @base_view_el_type = BaseViewElementType # title_desc_linking_html = render_to_string(:partial => "title_desc", # :locals => { :desc => title_desc, # :for_list => title_desc.dObj.isRepOrgGroup, # :for_col_level => false, # :base_image_url => nil, # :has_img => false, # :abbrev => abbrev, # :local_uri_part => local_part }) sObj = serialize_string_array([ list_id, list.size.to_s, list.singularTypeStr, list.orderOptStr.downcase, list.listTitle, list.isListOfCollections.to_s, NIL_OBJ_STR, NIL_OBJ_STR, list.serializedOrderByTextBPVs, title_desc_linking_html, NIL_OBJ_STR, list.serializedOrderOpts, list.serializedGroupingOpts, list.serializedFieldOpts, "false" ]) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => sObj) else # deal with no OK message end end # *****************************************^^ def new_grouping_structure abbrev = params['abbrev'] abbrev ||= initial_soc_abbrev local_part = params['local_part'] local_part ||= initial_soc_local_uri_part group = params['group'] order = params['order'] add_fields = params['add_fields'] add_fields = add_fields.split(",") if (add_fields) remove_fields = params['remove_fields'] remove_fields = remove_fields.split(",") if (remove_fields) env = KRModel.testDescEnv request = KRController.newGroupingStructureRequest(abbrev, local_part, env, group, order, add_fields, remove_fields) g_struct_response = KRController.submit(request) if(g_struct_response.message.isOK) g_struct = g_struct_response.viewObjs[0] g_struct_id = ViewObjManager.add(g_struct) title_desc = g_struct_response.viewObjs[1] @base_view_el_type = BaseViewElementType title_desc_linking_html = render_to_string(:partial => "title_desc", :locals => { :desc => title_desc, :for_list => title_desc.dObj.isRepOrgGroup, :for_col_level => false, :base_image_url => nil, :has_img => false, :abbrev => abbrev, :local_uri_part => local_part }) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => serialize_string_array([ g_struct_id, g_struct.size.to_s, g_struct.singularTypeStr, g_struct.orderOptStr.downcase, g_struct.listTitle, g_struct.isListOfCollections.to_s, abbrev, local_part, NIL_OBJ_STR, title_desc_linking_html, NIL_OBJ_STR, g_struct.serializedOrderOpts, g_struct.serializedGroupingOpts, g_struct.serializedFieldOpts, "true", g_struct.groupingTitle, g_struct.serializedGroupsAsOpts ])) else # deal with no OK message end end def new_search_results_grouping_structure query = params['q'] group = params['group'] order = params['order'] add_fields = params['add_fields'] add_fields = add_fields.split(",") if (add_fields) remove_fields = params['remove_fields'] remove_fields = remove_fields.split(",") if (remove_fields) env = KRModel.testDescEnv request = KRController.newSearchResultGrpngStructRequest(query, env, group, order, add_fields, remove_fields) s_g_struct_response = KRController.submit(request) if(s_g_struct_response.message.isOK) s_g_struct = s_g_struct_response.viewObjs[0] s_g_struct_id = ViewObjManager.add(s_g_struct) @base_view_el_type = BaseViewElementType #title_desc = g_struct_response.viewObjs[1] #title_desc_linking_html = render_to_string(:partial => "title_desc", # :locals => { :desc => title_desc, # :for_list => title_desc.dObj.isRepOrgGroup, # :for_col_level => false, # :base_image_url => nil, # :has_img => false, # :abbrev => abbrev, # :local_uri_part => local_part }) # title_desc_linking_html = "Búsqueda por " + query + "

" + # s_g_struct.size.to_s + " resultado" + (s_g_struct.size > 1 ? "s" : "") + # "::0" title_desc_linking_html = render_to_string(:partial => "search_title_desc", :locals => { :query => query, :size => s_g_struct.size}) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => serialize_string_array([ s_g_struct_id, s_g_struct.size.to_s, NIL_OBJ_STR, s_g_struct.orderOptStr.downcase, s_g_struct.listTitle, s_g_struct.isListOfCollections.to_s, NIL_OBJ_STR, NIL_OBJ_STR, NIL_OBJ_STR, title_desc_linking_html, NIL_OBJ_STR, s_g_struct.serializedOrderOpts, s_g_struct.serializedGroupingOpts, s_g_struct.serializedFieldOpts, "true", s_g_struct.groupingTitle, s_g_struct.serializedGroupsAsOpts ])) else # deal with no OK message end end def new_union_of_groups_list list_id = params['list_id'] group_ids = params['groups'].split(",") group_ids.map! { |s| s.to_i } env = KRModel.testDescEnv g_struct = ViewObjManager.get(list_id) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) if (g_struct != nil) u_of_g_list = g_struct.unionOfGroupsList(group_ids) u_of_g_list_id = ViewObjManager.add(u_of_g_list) render(:text => serialize_string_array([ u_of_g_list_id, u_of_g_list.size.to_s, u_of_g_list.singularTypeStr, u_of_g_list.orderOptStr.downcase, u_of_g_list.listTitle, u_of_g_list.isListOfCollections.to_s, NIL_OBJ_STR, NIL_OBJ_STR, u_of_g_list.serializedOrderByTextBPVs ])) else render(:text => NIL_OBJ_STR) end end def set_order_of_u_of_g_elements list_id = params['list_id'] order = params['order'] env = KRModel.testDescEnv g_struct = ViewObjManager.get(list_id) if (g_struct != nil) KRController.setOrderBy(g_struct, order) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => serialize_string_array([ g_struct.serializedFieldOpts ])) else render(:text => NIL_OBJ_STR) end end def full_desc # Note: lots of ugly, ugly hacks follow list_id = params['list_id'] el_num = params['el'].to_i @env = KRModel.testDescEnv @list = ViewObjManager.get(list_id) @kr_model = KRModel if (@list != nil) abbrev = @list.elAbbrev(el_num) local_part = @list.elLocalURIPart(el_num) request = KRController.newFullDescRequest(abbrev, local_part, @list, @env) test_response = KRController.submit(request) @desc = test_response.viewObjs()[0] @base_view_el_type = BaseViewElementType @base_image_url = @list.tmpImageURLBase(el_num) @title_desc = test_response.viewObjs()[1] sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:layout => false) else render(:text => NIL_OBJ_STR) end end # used when we request a desc obj without getting there from a list # in that case, even though we haven't been to the list yet, we need to be # able to show the user info about the object's location in the list def full_desc_and_list_info abbrev = params['abbrev'] local_part = params['local_part'] order = params['order'] @env = KRModel.testDescEnv @kr_model = KRModel if (order) soc_list_request = KRController.newSOCListContainingNodeRequest(abbrev, local_part, @env, order) else soc_list_request = KRController.newSOCListContainingNodeRequest(abbrev, local_part, @env) end soc_list_response = KRController.submit(soc_list_request) if(soc_list_response.message.isOK) list = soc_list_response.viewObjs[0] list_id = ViewObjManager.add(list) listable_d_obj = list.listableDescObj listable_d_obj_abbrev = listable_d_obj.inGraphPart.abbrev listable_d_obj_local_part = listable_d_obj.localURIPart summary = list.serializedSummary || NIL_OBJ_STR ser_list_info = serialize_string_array([ list_id, list.size.to_s, list.singularTypeStr, list.orderOptStr.downcase, list.listTitle.to_s, list.isListOfCollections, listable_d_obj_abbrev, listable_d_obj_local_part, NIL_OBJ_STR, NIL_OBJ_STR, summary, list.serializedOrderOpts, list.serializedGroupingOpts, list.serializedFieldOpts, "false" ]) el_num = soc_list_response.viewObjs[1].val full_desc_request = KRController.newFullDescRequest(abbrev, local_part, list, @env) full_desc_response = KRController.submit(full_desc_request) @desc = full_desc_response.viewObjs()[0] @base_view_el_type = BaseViewElementType @base_image_url = list.tmpImageURLBase(el_num) @title_desc = full_desc_response.viewObjs()[1] ser_full_desc = render_to_string(:action => "full_desc", :layout => false) full_desc_and_list_info = serialize_string_array([ ser_list_info, el_num.to_s, ser_full_desc ]) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => full_desc_and_list_info) else # deal with no OK message end # ... end def desc_list_page page = params['page'].to_i list_id = params['list_id'] @list = ViewObjManager.get(list_id) if (@list != nil) @descriptions = @list.pageOfDescriptions(page) @base_view_el_type = BaseViewElementType @init_el_num = @list.initElement(page) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:layout => false) else render(:text => NIL_OBJ_STR) end end def add_field list_id = params['list_id'] field_id = params['field'] list = ViewObjManager.get(list_id) if (list != nil) list.addField(field_id) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => "1") else render(:text => NIL_OBJ_STR) end end def remove_field list_id = params['list_id'] field_id = params['field'] list = ViewObjManager.get(list_id) if (list != nil) list.removeField(field_id) sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0) render(:text => "1") else render(:text => NIL_OBJ_STR) end end private def serialize_string_array(array) array.join("::") end def initial_soc_local_uri_part KRModel.archivalRoot.localURIPart end def initial_soc_abbrev KRModel.archivalRoot.inGraphPart.abbrev end end