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:
- You need to get branches/15x (Tiki 15.x version from SVN) for the latest and greatest goodies :-)
- Activate .htaccess by renaming _htaccess (even better is to link from .htaccess to _htaccess)
Note: rewrite rules are essential for this profile
- You need to get the CartoGraf theme first and copy it over to the
themes/
directory (see Theme section below)
- Select and apply the CartoGraf-15 profile from tiki-admin.php?page=profiles
- 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
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: "1,,6"
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: "2,image/*,1,img,,,1,n,$profileobject:imageBank$,2"
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: "1,,6"
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: "1,,15"
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
(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")
Notes
Development Wiki
Moved to
https://dev.tiki.org/CartoGraf.
Aliases
CartoGraf-15 |
CartoGraf for Tiki 15