# # 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 = "" 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_reponse_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 = { page_view_field_name = true file_type_field = true file_type_field = true } # parameters } # group 1 } # parameters_form attach_operations = { # 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 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 = true } # page_views } # columns } # add_page_views_report_column } # attach_operations } # page_views