# # Top-level Domain Snapon # # This snapon adds a field which is the top-level domain, calculated from the URL # top_level_domain = { label = "$lang_admin.snapons.top_level_domain.label" comment = "$lang_admin.snapons.top_level_domain.comment" config_snapon_category = "" version = "1.3" # 2012-??-?? - 1.0 - GMF - Initial creation # 2012-08-15 - 1.1 - GMF - Added support for URLs like http://mysite.com (with no trailing slash) # 2012-09-05 - 1.2 - GMF - Added reports back; changed top_level_domain field references to field_name parameter references, to allow multiple instances (e.g., referrer domain and URL domain). # 2013-01-14 - 1.3 - GMF - Made the report group a parameter parameters = { url_field = { parameter_value = "url" validation_type = "string" form_element_label = "$lang_admin.snapons.top_level_domain.parameters.url_field.form_element_label" form_element_type = "select" select_options_source = "log_fields" description = "" } # url_field field_name = { parameter_value = "{=capitalize(expand(lang_stats.field_labels.top_level_domain))=}" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.top_level_domain.parameters.field_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.top_level_domain.parameters.field_name.description" } # field_name report_group_name = { parameter_value = "content_group" validation_type = "string" form_element_label = "$lang_admin.snapons.top_level_domain.parameters.report_group_name.form_element_label" form_element_type = "text" form_element_width = "380" } # report_group_name } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.top_level_domain.parameters_form.group_1.description" parameters = { url_field = true field_name = true report_group_name = true } # parameters } # group 1 } # parameters_form attach_operations = { # Add log field add_log_fields = { type = "add_log_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { # label = "$lang_stats.field_labels.top_level_domain" # derivation_method = "log_filter" # category = "" # source_database_field = "top_level_domain" # type = "string" # aggregation_method = "none" # index = "true" # suppress_top = "0" # suppress_bottom = "2" # integer_bits = "0" } # top_level_domain_start_time } # fields } # add_log_fields # Add log filter add_log_filters = { type = "add_log_filters" filters = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "Compute top-level domain" # LM comment = "This computes the top level domain" # LM value = ` #echo("{= @parameters{'url_field'}{'parameter_value'} =}: " . {= @parameters{'url_field'}{'parameter_value'} =}); # Start with the {= @parameters{'url_field'}{'parameter_value'} =} field as the {= @parameters{'field_name'}{'final_node_name'} =} {= @parameters{'field_name'}{'final_node_name'} =} = {= @parameters{'url_field'}{'parameter_value'} =}; # If it's http://xyz/etc, use xyz if (matches_regular_expression({= @parameters{'field_name'}{'final_node_name'} =}, '^[a-z]+://([^:/]+)[:/]')) then {= @parameters{'field_name'}{'final_node_name'} =} = $1; # If it's http://xyz, use xyz else if (matches_regular_expression({= @parameters{'field_name'}{'final_node_name'} =}, '^[a-z]+://([^:/]+)$')) then {= @parameters{'field_name'}{'final_node_name'} =} = $1; # If it's xyz/abc/etc, use xyz else if (matches_regular_expression({= @parameters{'field_name'}{'final_node_name'} =}, '^([^:/]+)[:/]')) then {= @parameters{'field_name'}{'final_node_name'} =} = $1; # If it's x.y.co.uk, use y.co.uk as the TLD if (matches_regular_expression({= @parameters{'field_name'}{'final_node_name'} =}, '[.]([^.]+)[.]([^.]+)[.]([^.]+)$') and ('rewrite_rules.domains.second_level_domains'?{($2 . '_' . $3)})) then {= @parameters{'field_name'}{'final_node_name'} =} = $1 . '.' . $2 . '.' . $3; # If it's x.y.com, use y.com as the TLD else if (matches_regular_expression({= @parameters{'field_name'}{'final_node_name'} =}, '[.]([^.]+)[.]([^.]+)$') and ('rewrite_rules.domains.top_level_domains'?{$2})) then {= @parameters{'field_name'}{'final_node_name'} =} = $1 . '.' . $2; #echo("-> {= @parameters{'field_name'}{'final_node_name'} =}: " . {= @parameters{'field_name'}{'final_node_name'} =}); ` } # compute_top_level_domain } # filters } # add_log_filters # Add database field add_database_fields = { type = "add_database_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = "" } # fields } # add_database_fields # Add report fields add_report_fields = { type = "add_report_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = "" } # fields } # add_report_fields # When attaching: Add the reports. # Disabled because this is done automatically by Create Profile Wizard. # 2012-09-05 - GMF - Reenabled this--the new profile wizard handles this now, right? As in screen info snapon. add_reports = { type = "add_reports" reports = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "$lang_admin.snapons.top_level_domain.report_label" report_elements = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "$lang_admin.snapons.top_level_domain.report_label" type = "table" sort_by = "MAIN_SORT_FIELD" # Sort this report by the main sort field, whatever that may be columns = { top_level_domain = { report_field = "{= @parameters{'field_name'}{'final_node_name'} =}" } # top_level_domain } # columns add_all_aggregating_columns = true } # entry_pages } # report_elements } # "{= @parameters{'field_name'}{'final_node_name'} =}" } # reports reports_menu = { "{= @parameters{'report_group_name'}{'parameter_value'} =}" = { label = "{=expand(@'lang_stats.menu.groups'{ @parameters{'report_group_name'}{'parameter_value'} })=}" items = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "$lang_admin.snapons.top_level_domain.report_label" report = "{= @parameters{'field_name'}{'final_node_name'} =}" } # "{= @parameters{'field_name'}{'final_node_name'} =}" } # items } # "{= @parameters{'report_group_name'}{'parameter_value'} =}" } # reports_menu } # add_reports } # attach_operations } # top_level_domain