# # page_views snapon # # This snapon implements a "page views" numerical field, based on the file type and server response # page_views = { label = "$lang_admin.snapons.page_views.label" comment = "$lang_admin.snapons.page_views.comment" config_snapon_category = "" version = "1.0.3" # 2012-09-11 - GMF - 1.0 - Initial creation # 2012-??-?? - GMF - 1.0.1 - Fixed bugs in parameters form # 2012-12-04 - GMF - 1.0.2 - Added spider as part of calculation # 2012-12-07 - GMF - 1.0.3 - Fixed error when spider field was not present parameters = { file_type_field = { parameter_value = "" validation_type = "string" form_element_label = "$lang_admin.snapons.page_views.parameters.file_type_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # file_type_field server_response_field = { parameter_value = "" validation_type = "string" form_element_label = "$lang_admin.snapons.page_views.parameters.server_response_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # server_response_field spider_field = { parameter_value = "" validation_type = "string" form_element_label = "$lang_admin.snapons.page_views.parameters.spider_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # spider_field page_field = { parameter_value = "" validation_type = "string" form_element_label = "$lang_admin.snapons.page_views.parameters.page_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # page_field page_views_field_name = { parameter_value = "{=capitalize(expand(lang_stats.field_labels.page_views))=}" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.page_views.parameters.page_views_field_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.page_views.parameters.page_views_field_name.description" } # page_views_field_name } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.page_views.parameters_form.group_1.description" parameters = { file_type_field = true server_response_field = true spider_field = true page_field = true page_views_field_name = true } # parameters } # group 1 } # parameters_form attach_operations = { # When attaching: Add the log field add_log_field = { type = "add_log_fields" fields = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = "" } # fields } # add_aggregating_field_database_field # When attaching: Add the page_views database field add_page_views_database_field = { type = "add_database_fields" fields = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = { label = "{= @parameters{'page_views_field_name'}{'parameter_value'} =}" type = "int" database_field = "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" # derivation_method = "database_filter" category = "" aggregation_method = "sum" index = "true" suppress_top = "0" suppress_bottom = "2" integer_bits = "0" } # page_views } # fields } # add_page_views_database_field # When attaching: Add a database filter to compute page views # add_page_views_database_filter = { # type = "add_database_filters" # filters = { # "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = { # expression = ` #if (starts_with({= @parameters{'server_response_field'}{'parameter_value'} =}, '4')) then ( # {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 0; #); #else if (({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JPEG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JPG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'GIF') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'ICO') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'PNG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'CSS') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'SWF') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JS')) then ( # {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 0; #); #else ( # {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 1; #); # #` # } # page_views # # } # filters # } # add_page_views_database_filter # When attaching: Add a log filter to compute page views add_page_views_log_filter = { type = "add_log_filters" filters = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = { label = "Compute page views" #LM comment = "This computes the value of the page views field" #LM value = ` if (starts_with({= @parameters{'server_response_field'}{'parameter_value'} =}, '4')) then ( {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 0; ); {= if (@parameters{'spider_field'}{'parameter_value'} ne '') then # this section is included if spiders_field is non-empty " else if (!starts_with(" . @parameters{'spider_field'}{'parameter_value'} . ", '(')) then ( " . @parameters{'page_views_field_name'}{'final_node_name'} . " = 0; ); " # end spider-dependent section =} else if (({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JPEG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JPG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'GIF') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'ICO') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'PNG') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'CSS') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'SWF') or ({= @parameters{'file_type_field'}{'parameter_value'} =} eq 'JS')) then ( {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 0; ); else ( {= @parameters{'page_views_field_name'}{'final_node_name'} =} = 1; ); ` } # {= @parameters{'page_views_field_name'}{'final_node_name'} =} strip_non_page_views = { label = '$lang_admin.log_filters.strip_non_page_views_label' comment = '$lang_admin.log_filters.strip_non_page_views_comment' value = "if ({= @parameters{'page_views_field_name'}{'final_node_name'} =} == 0) then {= @parameters{'page_field'}{'parameter_value'} =} = substr({= @parameters{'page_field'}{'parameter_value'} =}, 0, last_index({= @parameters{'page_field'}{'parameter_value'} =}, '/') + 1) . '(nonpage)';" } # strip_non_page_views } # filters } # add_page_views_log_filter # When attaching: Add the page_views report field add_page_views_report_field = { type = "add_report_fields" fields = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = { label = "{= @parameters{'page_views_field_name'}{'parameter_value'} =}" column_label = "" column_info = "" database_field = "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" display_format_type = "integer" show_remainder_value = true show_average_value = true show_min_value = true show_max_value = true show_total_value = true percent_calculation = "sum" } # page_views } # fields } # add_page_views_report_field # When attaching: Add the page_views field to all xref groups add_page_views_xref_fields = { type = "add_xref_fields" xref_group = "*" fields = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = "page_views" } # fields } # add_page_views_xref_fields # When attaching: Add the page_views column to all report elements add_page_views_report_column = { type = "add_report_element_columns" report = "*" report_element = "*" columns = { "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" = { report_field = "{= @parameters{'page_views_field_name'}{'final_node_name'} =}" show_column = true show_percent_column = false show_bar_column = false show_graph = false } # page_views } # columns } # add_page_views_report_column } # attach_operations } # page_views