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 (Tiki) to make a very specific application.
As of June 2012, it is in Beta. You can play with the demo at:
http://demo.tiki.org/cartograf/ (password is at:
http://demo.tiki.org/)
To get your own copy of CartoGraf
- Download and Install
Tiki9 As of 2012-07-10, you need to get trunk (future Tiki10) for the latest and greatest goodies :-) (Use the Daily Build of from SVN)
- Apply the CartoGraf profile
- Follow the profile Setup instructions
We hope you like it and please do join the community!
Work in Progress...
(Do not use Kaltura wikiplugin as it is not enabled in default install when viewing the profile before apply)
General
YAML
instructions: Setup
preferences:
feature_sefurl: y
allowRegister: y
browsertitle: CartoGraf Project
tracker_refresh_itemlink_detail: y
header_custom_js: wikicontent:CartoGraf_LiveHeaderMap
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
Permissions
YAML
permissions:
Anonymous:
allow:
- search
- view_trackers
- tracker_view_attachments
Registered:
allow:
- attach_trackers
- create_tracker_items
- add_object
- remove_object
- upload_files
Users
YAML
objects:
-
type: users
data:
name: $profilerequest:Test User 1 Login Name:$demo$
pass: $profilerequest:Password for User 1:$demo5$
change: $profilerequest:Change password for User 1 after first login? (y/n):$n$
email: $profilerequest:User 1 Email (optional):$ $
groups: [ $profilerequest:Groups User 1 should be assigned (for more groups separate them by comma):$Registered$ ]
Look & Feel
YAML
preferences:
style: CartoGraf.css
feature_fixed_width: n
jquery_ui_selectmenu: y
feature_page_title: n
feature_sitelogo: y
wiki_edit_plugin: n
sitelogo_src: styles/CartoGraf/logo.gif
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: Maps
url: ((MyMaps))
-
name: Partners
url: ((Partners))
-
name: Help
url: ((Help))
-
name: Setup
url: ((Setup))
permissions: [ admin ]
-
type: menu
ref: CartoGraf_RightEdge_menu
data:
name: RightEdge
description:
collapse: none
items:
-
name: Register
url: tiki-register.php
-
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:
nopage: Map
custom: <div id="TheLiveHeaderMap" style="height:188px"></div>
-
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:
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: [mapquest_street, mapquest_aerial, 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
fgal_upload_from_source: y
Drawing
Hiding of Drawing buttons requires Tiki10
YAML
preferences:
feature_draw: 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, palette_holder
Trackers
YAML
objects:
-
type: tracker
ref: pointsOfInterest
data:
name: Points of interest
allow: [creator_modification, creator_deletion]
show: list_modification_date
section_format: tab
-
type: tracker_option
data:
tracker: $pointsOfInterest
name: popup_fields
value: "$profileobject:poiDescription$,$profileobject:poiAttachments$"
-
type: tracker_field
ref: poiName
data:
order: 10
name: Name
type: text_field
tracker: $pointsOfInterest
flags: [ mandatory, list, title, link, searchable ]
-
type: tracker_field
ref: poiDescription
data:
order: 20
name: Description
type: text_area
options: "1"
tracker: $pointsOfInterest
flags: [ ]
-
type: tracker_field
ref: poiIcon
data:
order: 30
name: Icon
type: icon
tracker: $pointsOfInterest
flags: [ list ]
options: "$profileobject:iconContainer$"
-
type: tracker_field
ref: poiMap
data:
order: 40
name: Map
type: item_link
options: "$profileobject:maps$,$profileobject:mapName$,0,,opc,,,,0,0,exact,one,0,$profileobject:mapShareCode$"
tracker: $pointsOfInterest
flags: [ mandatory, list, title, searchable ]
permname: map
visible: creator_editable
-
type: tracker_field
ref: poiFinder
data:
order: 50
name: Finder
type: user
options: "1"
tracker: $pointsOfInterest
flags: [ mandatory, list ]
permname: finder
visible: creator_editable
-
type: tracker_field
ref: poiCoordinates
data:
order: 200
name: Coordinates
type: header
tracker: $pointsOfInterest
-
type: tracker_field
ref: poiLocation
data:
order: 110
name: Location
type: map
options: "1"
tracker: $pointsOfInterest
flags: [ mandatory ]
-
type: tracker_field
ref: poiAttachments
data:
order: 200
name: Attachments
type: header
tracker: $pointsOfInterest
-
type: tracker_field
ref: poiImage
data:
order: 210
name: Image
type: files
options: "$profileobject:imageContainer$,image/*,1,1"
tracker: $pointsOfInterest
flags: [ ]
Zones Tracker
YAML
objects:
-
type: tracker
ref: zones
data:
name: Zones
allow: [creator_modification, creator_deletion]
show: list_modification_date
section_format: tab
-
type: tracker_field
ref: zoneName
data:
order: 10
name: Name
type: text_field
tracker: $zones
flags: [ list, title, link, searchable ]
-
type: tracker_field
ref: zoneDescription
data:
order: 20
name: Description
type: text_area
options: "1"
tracker: $zones
flags: [ ]
-
type: tracker_field
ref: zoneMap
data:
order: 30
name: Map
type: item_link
options: "$profileobject:maps$,$profileobject:mapName$,0,,opc,,,,0,0,exact,one,0,$profileobject:mapShareCode$"
tracker: $zones
flags: [ mandatory, list, title, searchable ]
permname: map
visible: creator_editable
-
type: tracker_field
ref: zoneFinder
data:
order: 40
name: Finder
type: user
options: "1"
tracker: $zones
flags: [ mandatory, list ]
permname: finder
visible: creator_editable
-
type: tracker_field
ref: zoneFeature
data:
order: 90
name: Zone
type: geographic_feature
options: ""
tracker: $zones
flags: [ mandatory ]
-
type: tracker_field
ref: zoneAttachments
data:
order: 200
name: Attachments
type: header
tracker: $zones
-
type: tracker_field
ref: zoneImage
data:
order: 210
name: Image
type: files
options: "$profileobject:imageContainer$,image/*,1,1"
tracker: $zones
flags: [ ]
Maps Tracker
YAML
objects:
-
type: tracker
ref: maps
data:
name: Maps
allow: [creator_modification, creator_deletion]
show: list_modification_date
section_format: tab
-
type: tracker_field
ref: mapName
data:
name: Name
type: text_field
tracker: $maps
flags: [ mandatory, list, title, link, searchable ]
-
type: tracker_field
ref: mapDescription
data:
name: Instructions
type: text_area
options: "1"
tracker: $maps
flags: [ searchable ]
-
type: tracker_field
ref: mapDetailsHeader
data:
name: Details
type: header
tracker: $maps
-
type: tracker_field
ref: mapBaseLocation
data:
name: Base Location
type: map
tracker: $maps
flags: [ mandatory ]
-
type: tracker_field
ref: mapOwner
data:
name: Owner
type: user
options: "1"
tracker: $maps
flags: [ mandatory, list ]
permname: owner
-
type: tracker_field
ref: mapShareCode
data:
name: Share Code
type: text_field
tracker: $maps
flags: [ list ]
options: "0,10,,,15
permname: shareCode
Legend
YAML
objects:
-
type: tracker
ref: legend
data:
name: Legend
allow: [creator_modification, creator_deletion]
show: list_modification_date
-
type: tracker_field
ref: legendIcon
data:
name: Icon
type: icon
tracker: $legend
flags: [ mandatory, list ]
options: "$profileobject:iconContainer$"
-
type: tracker_field
ref: legendText
data:
name: Text
type: text_field
tracker: $legend
flags: [ mandatory, list, title, link, searchable ]
-
type: tracker_field
ref: legendMap
data:
name: Map
type: item_link
options: "$profileobject:maps$,$profileobject:mapName$,0,,opc,,,,0,0,exact,one,0,$profileobject:mapShareCode$"
tracker: $legend
flags: [ mandatory, list, title, searchable ]
permname: map
visible: creator_editable
-
type: tracker_field
ref: legendFinder
data:
name: Finder
type: user
options: "1"
tracker: $legend
flags: [ mandatory, list ]
permname: finder
visible: creator_editable
File Galleries
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: [ public, visible ]
column: [ icon, name, created, creator, files ]
init_files:
- http://profiles.tiki.org/pics/icons/plugin.png
-
type: file_gallery
ref: imageContainer
data:
parent: 1
name: Image Uploads
description: Images uploaded by students
owner: admin
archives: -1
flags: [ public, visible ]
column: [ icon, name, created, creator, files ]
Wiki Pages
YAML
objects:
-
type: wiki_page
ref: home_page
data:
name: HomePage
content: wikicontent:CartoGraf_HomePage
-
type: wiki_page
ref: cartograf_setup
data:
name: Setup
description: Post-Profile Setup Instructions
lang: en
content: wikicontent:CartoGraf_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: mymaps_page
data:
name: MyMaps
content: wikicontent:CartoGraf_MyMaps
-
type: wiki_page
ref: map_page
data:
name: Map
content: wikicontent:CartoGraf_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
Using:
Developer notes
- When you apply the profile, you may see "Preference set: geo_tilesets=Array" in the response. This is a cosmetic error. The preference is set correctly.
1-liner to re-install a fresh Tiki with profile
php installer/shell.php install; sh setup.sh ; php lib/search/shell.php rebuild; php lib/profilelib/shell.php install CartoGraf ; sh setup.sh
Questions
- Map title & description: Where should they go?
-
Where should layer selector go? was decided at the bottom
- Is there any point for the "Editable" and "Markers" checkboxes currently in tools?
Todos
Maps
- Meta data about maps: No current way to edit (title, instructions, etc. ) and delete after creation
-
2012-08-24: Can't delete legends fixed
-
2012-08-24: Can't change colors of lines drawn on maps fixed
-
Minify JavaScript not working with 41807 seems OK nowadays
-
StreetView: nicer error message when not found done
-
Texte on POI? (even without pop-up?) (not desired)
- Improve UI of POI (to be less "system" and more "application")
- Search: after picking result from short list, list should disappear and perhaps maps should zoom in
-
Permalink has sourceId=undefined: is this for the map/layer? If so, doesn't work. fixed
Legends
-
2012-08-24: Default image not recognized fixed
Drawing bugs & enhancements
- Pass the current Tiki language to SVG-edit as per ConfigOptions
-
2012-08-24: File is not an image when trying to draw fixed
- Registered user should only be able to draw on own pictures
- Regular drawings: missing canvas. Try from tiki-list_file_gallery.php on latest 9.x
-
Warning: imagecreatefromstring() function.imagecreatefromstring: Data is not in a recognized format in /home/learnow/public_html/cartograf/lib/images/gd.php on line 57 fixed
-
pop-up too small fixed
-
r41807: Registered users don't have draw on image button fixed
-
Stay in place after draw (Robert)
- IE9 and Firefox are superb. Chrome needs an extra refresh to show background pic
- Drawing interface is cluttered (canvas seems too big)
- Why is opacity disappearing?
- Find a way to use http://code.google.com/p/svg-edit/wiki/ConfigOptions
- Default opacity should be configurable via Tiki (we want 50% for CartoGraf)
- There are other suggestions/requests from Steve/Marie-Anne but we'll come back later to them (Marc has email about this)
Trunk
- Proper testing of hiding buttons, and
add list to profile done
-
After: apply for a backport to 9.x done
General
- Add a general image gallery for the POI interface (to improve on the search interface)
-
Print view of map, POIs and legend
- demo users are forced to change password even though the profile says they don't need to
- jQuery pop-up make smaller when there is not a lot of content (better for small screens)
- As we are working collaboratively on .css and .tpl, how about adapt PluginArchiveBuilder to build the theme zip?
-
Get it working on http://demo.tiki.org/cartograf/
-
Weird issues, suspected issue with Lucene "Search index could not be updated. The site is misconfigured. Contact an administrator." looks OK now, perhaps was a broken template. running sh setup.sh seems to solve it.
- Demo should flush daily
- Pass sender email, password, etc. in the cron job
- Perhaps we could do two runs
- 1st run is general profile (like everyone else)
- 2nd run is profile with things specific to the demo (and hard coding instructions to avoid having any manual config)
- Make waiting with a better UI (ex.: blank page with spinner instead of seeing Tiki application stuff)
- When logged in, link to tiki-register.php should be hidden
Workaroundable
-
Profiles for tracker Points of interest: order is not respected fixed
- A started profile with realistic course data
- More videos
- More docs
- A microsite would be nice but likely too much work for this phase
Limitations
-
We would have liked to add an Overview Map, but it is not working well. Next step would be to try again in OpenLayers 2.12 when it comes out. It works now!
Phase 2