CartoGraf site
CartoGraf site


CartoGraf for Tiki version 15+


CartoGraf is an interactive web-based mapping application to enhance learning in history and geography classes in high schools. CartoGraf is mainly based on Maps, Drawings, PluginAppFrame and Trackers. It is a great example of how to use profiles in a general purpose app to make a very specific application using Tiki as a Framework.

To get your own copy of CartoGraf:
  1. You need to get branches/15x (Tiki 15.x version from SVN) for the latest and greatest goodies :-)
  2. Activate .htaccess by renaming _htaccess (even better is to link from .htaccess to _htaccess)
    Note: rewrite rules are essential for this profile
  3. You need to get the CartoGraf theme first and copy it over to the themes/ directory (see Theme section below)
  4. Select and apply this CartoGraf_15 profile from tiki-admin.php?page=profiles
  5. Follow the profile Setup instructions

We hope you like it and feel free to join the Tiki community!

To see a demo video of the older version, please visit: https://tv.tiki.org/CartoGraf

Theme


Pages included by this profile


General Preferences

YAML
#instructions: Setup preferences: feature_search_fulltext: n feature_search: y feature_sefurl: y allowRegister: n browsertitle: CartoGraf Demo tracker_refresh_itemlink_detail: y geo_always_load_openlayers: y url_after_validation: Account_Validated feature_jquery_ui_theme: start feature_left_column: n tracker_clone_item: y toolbar_trackers: bold,list,numlist,wikiplugin_youtube layout_add_body_group_class: y layout_tabs_optional: n feature_wiki_ext_icon: n feature_syntax_highlighter: n search_error_missing_field: n sitelogo_title: CartoGraf sitelogo_alt: CartoGraf logo geo_enabled: y

Temporary

YAML
preferences: validateUsers: n feature_antibot: n sitelogo_alt: CartoGraf logo


File Galleries Prefs

YAML
preferences: fgal_tracker_existing_search: y fgal_elfinder_feature: y fgal_upload_from_source: y fgal_quota_per_fgal: y fgal_quota_default: 0 fgal_sort_mode: lastModif fgal_list_name: n fgal_list_description: y fgal_list_last_user: y fgal_list_author: o fgal_list_created: o fgal_list_lastModif: y fgal_list_size: y fgal_list_files: n fgal_image_max_size_x: 800


User Files

YAML
preferences: feature_userfiles: y feature_use_fgal_for_user_files: y userfiles_private: n userfiles_hidden: y userfiles_quota: 30 quota_show: bar_and_text


Limit username pattern

CartoGraf relies heavily on Unified Search (Zend_Search_Lucene). Because of this, a username jean-marc won't work. Since hypens are often used in emails, you can't use CartoGraf with the pref "Use email as username" (login_is_email). Space and quote should also not be permitted. Theoretically, underscore (_) should work, but tests have demonstrated that is doesn't. Thus, we are restricting to only numbers and letters, without any accents.
As of Tiki 12 the default unified search engine uses mysql which has a minimum searchable token length of 4, so setting minumum user name length to 5 to be safe.

YAML
preferences: username_pattern: /^[_a-zA-Z0-9]*$/ login_is_email: n min_username_length: 5


Permissions

YAML
permissions: Anonymous: allow: - search - view_trackers - tracker_view_attachments Registered: allow: - attach_trackers - create_tracker_items - add_object - remove_object - upload_files - list_file_galleries - view_file_gallery - userfiles


Look & Feel

YAML
preferences: theme: CartoGraf feature_fixed_width: n jquery_ui_selectmenu: y feature_page_title: n feature_sitelogo: y wiki_edit_plugin: n sitelogo_src: themes/CartoGraf/img/logo.gif smarty_security_dirs: [themes/CartoGraf/img]


YAML
objects: - type: menu ref: CartoGraf_Top_menu data: name: Top description: A menu containing the base navigation of the site collapse: none items: - name: Home url: ((HomePage)) - name: Help url: ((Help)) - name: Setup url: ((Setup)) permissions: [ admin ] - name: Admin url: tiki-admin.php permissions: [ admin ] - type: menu ref: CartoGraf_RightEdge_menu data: name: RightEdge description: collapse: none items: - name: Register url: tiki-register.php groups: [ Anonymous ] - name: Demo url: ((Demo)) - name: Contact url: ((Contact))


Modules

YAML
preferences: modseparateanon: y objects: - type: module ref: LiveHeaderMap_module data: position: top order: 0 name: LiveHeaderMap groups: [ Anonymous, Registered ] params: nobox: y nopage: Map custom: <div id="TheLiveHeaderMap" style="height:188px"></div> - type: module ref: Footer_module data: position: bottom order: 0 name: Footer groups: [ Anonymous, Registered ] params: nobox: y custom: "{if $prefs.language eq 'fr'}{wikiplugin _name='include' page='Footer' start='-FR-START-' stop='-FR-END-'}{/wikiplugin}{else}{wikiplugin _name='include' page='Footer' start='-EN-START-' stop='-EN-END-'}{/wikiplugin}{/if}" - type: module ref: CustomDynamicCSS_module data: position: pagetop order: 0 name: Custom Dynamic CSS groups: [ Anonymous, Registered ] params: nobox: y custom: "{if $prefs.search_error_missing_field eq 'n'}{literal}<style type='text/css'>#error_report .alert {display: none}</style>{/literal}{/if}" - type: module ref: LocationSearch_module data: position: top order: 49 #ensure the map location search is assigned as last module name: map_search_location groups: [ Registered ] params: legacy_mode: search_box show_search_button: y show_go_button: n show_edit_button: n default_button: search page: Map nobox: y style: "float: right; margin-right: 15px" #most of the params ignored as the module is not standard and does have no module div rendered but just the form tag (TODO: fix in Tiki) - type: module ref: TopMenu_module data: position: top order: 1 name: menu groups: [ Anonymous, Registered ] params: id: $CartoGraf_Top_menu type: horiz css: y menu_id: TopMenu translate: y nobox: y decorations: n notitle: y style: "float: left; margin-left: 350px" - type: module ref: RightEdgeMenu_module data: position: right order: 1 name: menu groups: [ Anonymous ] params: bootstrap: n id: $CartoGraf_RightEdge_menu menu_id: RightEdgeMenu nobox: y nopage: Map


Features

YAML
preferences: feature_wiki: y feature_articles: n feature_mytiki: n feature_trackers: y geo_tilesets: [openstreetmap, google_street, google_satellite, google_physical, google_hybrid, blank] geo_google_streetview: y geo_google_streetview_overlay: y wikiplugin_appframe: y wikiplugin_list: y feature_search: y feature_wiki_argvariable: y trackerfield_geographicfeature: y



Drawing

YAML
preferences: feature_draw: y feature_draw_separate_base_image: y feature_draw_in_userfiles: y feature_draw_hide_buttons: ellipse_cx, tool_ellipse_cy, tool_ellipse_rx, tool_ellipse_ry, rect_width_tool, rect_height_tool, cornerRadiusLabel, tool_eyedropper, view_grid, tool_angle, tool_blur, tool_position, xy_panel, marker_panel, tool_reorient, rulers, tool_source, tool_zoom, tool_eyedropper, view_grid, tool_wireframe, line_panel, main_button

Trackers

Points of interest

YAML
objects: - type: tracker ref: pointsOfInterest data: name: Points of interest allow: [creator_modification, creator_deletion] show: list_modification_date section_format: tab admin_only_view: y - type: tracker_option data: tracker: $pointsOfInterest name: popup_fields value: "$profileobject:poiImage$,$profileobject:poiDescription$,$profileobject:poiFinder$" - type: tracker_field ref: poiName data: order: 10 name: Name type: text_field tracker: $pointsOfInterest flags: [ public, mandatory, list, title, link, searchable ] - type: tracker_field ref: poiDescription data: order: 20 name: Description type: text_area options: toolbars: 1 height: 6 distinct: n wysiwyg: n samerow: 1 tracker: $pointsOfInterest flags: [ public ] - type: tracker_field ref: poiIcon data: order: 30 name: Icon type: icon tracker: $pointsOfInterest flags: [ public, list ] options: "$profileobject:iconContainer$" - type: tracker_field ref: poiCoordinates data: order: 40 name: Coordinates type: header tracker: $pointsOfInterest - type: tracker_field ref: poiLocation data: order: 50 name: Location type: map options: "1" tracker: $pointsOfInterest flags: [ public, mandatory ] - type: tracker_field ref: poiAttachments data: order: 60 name: Attachments type: header tracker: $pointsOfInterest - type: tracker_field ref: poiImage data: order: 70 name: Image type: files options: galleryId: 2 filter: image/* count: 1 displayMode: img replace: n uploadInModal: y image_x: 800 image_y: 800 tracker: $pointsOfInterest flags: [ public ] - type: tracker_field ref: poiDetails data: order: 80 name: Details type: header tracker: $pointsOfInterest - type: tracker_field ref: poiMap data: order: 90 name: Map type: item_link options: trackerId: $profileobject:maps$ fieldId: $profileobject:mapName$ displayFieldsList: - 0 status: opc preSelectFieldMethod: exact displayOneItem: one indexRemote: - $profileobject:mapShareCode$ cascade: 7 tracker: $pointsOfInterest flags: [ public, mandatory, list, title, searchable ] permname: map visible: immutable - type: tracker_field ref: poiFinder data: order: 100 name: Finder type: user options: "1" tracker: $pointsOfInterest flags: [ public, mandatory, list ] permname: finder visible: immutable


Zones

This is both for polygons and paths

YAML
objects: - type: tracker ref: zones data: name: Zones allow: [creator_modification, creator_deletion] show: list_modification_date section_format: tab admin_only_view: y - type: tracker_option data: tracker: $zones name: popup_fields value: "$profileobject:zoneImage$,$profileobject:zoneDescription$,$profileobject:zoneFinder$" - type: tracker_field ref: zoneName data: order: 10 name: Name type: text_field tracker: $zones flags: [ public, list, title, link, searchable ] - type: tracker_field ref: zoneDescription data: order: 20 name: Description type: text_area options: toolbars: 1 height: 6 distinct: n wysiwyg: n samerow: 1 tracker: $zones flags: [ public ] - type: tracker_field ref: zoneAttachments data: order: 30 name: Attachments type: header tracker: $zones - type: tracker_field ref: zoneImage data: order: 40 name: Image type: files options: "2,image/*,1,img,,,1,n,$profileobject:imageBank$,2" tracker: $zones flags: [ public ] - type: tracker_field ref: zoneDetails data: order: 50 name: Details type: header tracker: $zones - type: tracker_field ref: zoneMap data: order: 60 name: Map type: item_link options: trackerId: $profileobject:maps$ fieldId: $profileobject:mapName$ displayFieldsList: - 0 status: opc preSelectFieldMethod: exact displayOneItem: one indexRemote: - $profileobject:mapShareCode$ cascade: 7 tracker: $zones flags: [ public, mandatory, list, title, searchable ] permname: map visible: immutable - type: tracker_field ref: zoneFinder data: order: 70 name: Finder type: user options: "1" tracker: $zones flags: [ public, mandatory, list ] permname: finder visible: immutable - type: tracker_field ref: zoneFeature data: order: 80 name: Zone type: geographic_feature options: "" tracker: $zones flags: [ public, mandatory ]


Maps

YAML
objects: - type: tracker ref: maps data: name: Maps allow: [creator_modification, creator_deletion] show: list_modification_date section_format: tab admin_only_view: y - type: tracker_option data: tracker: $maps name: popup_fields value: "$profileobject:mapDescription$" - type: tracker_field ref: mapName data: name: Name type: text_field tracker: $maps order: 10 flags: [ public, mandatory, list, title, link, searchable ] - type: tracker_field ref: mapDescription data: name: Instructions type: text_area options: toolbars: 1 height: 6 distinct: n wysiwyg: n samerow: 1 tracker: $maps order: 20 flags: [ public, searchable ] - type: tracker_field ref: mapShareCode data: name: Share Code type: text_field tracker: $maps flags: [ public, list, searchable ] options: "0,10,,,50" order: 30 permname: shareCode validation: regex validation_param: \w* validation_message: Only letters and numbers are allowed in share codes - type: tracker_field ref: mapDetailsHeader data: name: Change Base location type: header tracker: $maps order: 40 - type: tracker_field ref: mapBaseLocation data: name: Base Location type: map tracker: $maps order: 50 flags: [ public, mandatory ] - type: tracker_field ref: mapOwner data: name: Owner type: user options: "1" tracker: $maps order: 60 flags: [ public, mandatory, list ] permname: owner visible: immutable


Legends

YAML
objects: - type: tracker ref: legend data: name: Legend allow: [creator_modification, creator_deletion] show: list_modification_date admin_only_view: y - type: tracker_field ref: legendIcon data: name: Icon type: icon tracker: $legend flags: [ public, mandatory, list ] order: 10 options: "$profileobject:iconContainer$" - type: tracker_field ref: legendText data: name: Text type: text_field tracker: $legend order: 20 flags: [ public, mandatory, list, title, link, searchable ] - type: tracker_field ref: legendMap data: name: Map type: item_link options: trackerId: $profileobject:maps$ fieldId: $profileobject:mapName$ displayFieldsList: - 0 status: opc preSelectFieldMethod: exact displayOneItem: one indexRemote: - $profileobject:mapShareCode$ cascade: 7 tracker: $legend flags: [ public, mandatory, list, title, searchable ] permname: map order: 30 visible: immutable - type: tracker_field ref: legendFinder data: name: Finder type: user options: "1" tracker: $legend order: 40 flags: [ public, mandatory, list ] permname: finder visible: immutable


File Galleries

User files need to be added somewhere
YAML
objects: - type: file_gallery ref: iconContainer data: parent: 1 name: Icons description: Icons available for selection in the map. owner: admin archives: 5 flags: [visible] init_files: - https://profiles.tiki.org/pics/icons/plugin.png - type: file_gallery ref: imageBank data: parent: 1 name: Image Bank description: Images uploaded by site admins, for use by teachers and students owner: admin archives: -1 flags: [visible] image_max_size_x: 0

Wiki Pages

YAML
objects: - type: wiki_page ref: home_page data: name: HomePage content: wikicontent:CartoGraf_HomePage - type: wiki_page ref: cartograf_footer data: name: Footer content: wikicontent:CartoGraf_Footer - type: wiki_page ref: cartograf_setup data: name: Setup description: Post-Profile Setup Instructions lang: en content: wikicontent:CartoGraf_15_Setup - type: wiki_page ref: cartograf_help data: name: Help description: Help lang: en content: wikicontent:CartoGraf_Help - type: wiki_page ref: account_validated_page data: name: Account_Validated description: Account Validated lang: en content: wikicontent:CartoGraf_NewAccountValidationIncludedPage - type: wiki_page ref: demo_page data: name: Demo lang: en content: wikicontent:CartoGraf_Demo - type: wiki_page ref: partners_page data: name: Partners lang: en content: wikicontent:CartoGraf_Partners - type: wiki_page ref: contact_page data: name: Contact lang: en content: wikicontent:CartoGraf_Contact


Application Frame Pages

YAML
objects: - type: wiki_page ref: map_page data: name: Map content: wikicontent:CartoGraf_15_Map - type: wiki_page ref: mapcanvas_share_page data: name: MapCanvasShare content: wikicontent:CartoGraf_MapCanvasShare - type: wiki_page ref: mapcanvas_solo_page data: name: MapCanvasSolo content: wikicontent:CartoGraf_MapCanvasSolo - type: wiki_page ref: mapselector_page data: name: MapSelector content: wikicontent:CartoGraf_MapSelector


Known Issues

Regressions

(means it works fine in Tiki 12)
  • Streetview images loaded remotely from Google after saving the marker do not load (403 forbidden even with API key filled in to control panels - seems missing lib reference in html head for some reason?)
  • Uploading files (images) via modal dialog does not work (returns error "File empty") ( see https://dev.tiki.org/item6350 ) Workaround-ed by setting the height max size too.

Notes


Development Wiki

Moved to https://dev.tiki.org/CartoGraf.

Aliases
CartoGraf-15 | CartoGraf for Tiki 15