CartoGraf is an interactive web-based mapping application to enhance learning in history and geography classes in high schools. CartoGraf makes is mainly based on
Maps,
Drawings,
PluginAppFrame and
Trackers. This is a great example of how to use profiles to use a general purpose app (Tiki) to make a very specific application.
It will be launched in June 2012.
To get your own copy of CartoGraf
- Download and Install Tiki9 (Use the Daily Build until 9.0 is officially released.
- Apply the CartoGraf profile
- Follow the profile 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: Instructions
preferences:
allowRegister: y
feature_custom_html_head_content: '<script src="http://www.openlayers.org/api/OpenLayers.js"></script>'
header_custom_js: wikicontent:CartoGraf_LiveHeaderMap
url_after_validation: Account_Validated
Permissions
YAML
permissions:
Anonymous:
allow:
- search
Registered:
allow:
- tracker_view_comments
- tracker_view_ratings
- view_trackers
- view_trackers_pending
- tracker_view_attachments
- attach_trackers
- comment
- comment_tracker_items
- create_tracker_items
- add_object
- remove_object
- upload_files
Look & Feel
YAML
preferences:
style: CartoGraf.css
feature_fixed_width: n
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: Partners
url: ((Partners))
-
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:230px"></div>
-
type: module
ref: LocationSearch_module
data:
position: top
order: 1
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: 350px" #most of them ignored as the module is not standard
-
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_draw: y
feature_mytiki: n
feature_trackers: y
geo_tilesets: [google_physical, openstreetmap, google_street, google_satellite]
geo_google_streetview: y
wikiplugin_appframe: y
wikiplugin_list: y
feature_search: y
feature_wiki_argvariable: y
trackerfield_geographicfeature: y
fgal_upload_from_source: y
Trackers
YAML
objects:
-
type: tracker
ref: pointsOfInterest
data:
name: Points of interest
allow: creator_modification
show: list_modification_date
-
type: tracker_field
ref: poiName
data:
name: Name
type: text_field
tracker: $pointsOfInterest
flags: [ mandatory, list, title, link, searchable ]
-
type: tracker_field
ref: poiIcon
data:
name: Icon
type: icon
tracker: $pointsOfInterest
flags: [ list ]
options: "$profileobject:iconContainer$"
-
type: tracker_field
ref: poiMap
data:
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: admin_only
-
type: tracker_field
ref: poiLocation
data:
name: Location
type: map
options: "1"
tracker: $pointsOfInterest
flags: [ mandatory ]
-
type: tracker_field
ref: poiFinder
data:
name: Finder
type: user
options: "1"
tracker: $pointsOfInterest
flags: [ mandatory, list ]
permname: finder
visible: admin_only
-
type: tracker_field
ref: poiDescription
data:
name: Description
type: text_area
options: ""
tracker: $pointsOfInterest
flags: [ ]
-
type: tracker_field
ref: poiImage
data:
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
show: list_modification_date
-
type: tracker_field
ref: zoneName
data:
name: Name
type: text_field
tracker: $zones
flags: [ list, title, link, searchable ]
-
type: tracker_field
ref: zoneMap
data:
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
-
type: tracker_field
ref: zoneFeature
data:
name: Zone
type: geographic_feature
options: ""
tracker: $zones
flags: [ mandatory ]
-
type: tracker_field
ref: zoneFinder
data:
name: Finder
type: user
options: "1"
tracker: $zones
flags: [ mandatory, list ]
permname: finder
-
type: tracker_field
ref: zoneDescription
data:
name: Description
type: text_area
options: ""
tracker: $zones
flags: [ ]
-
type: tracker_field
ref: zoneImage
data:
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
show: list_modification_date
-
type: tracker_field
ref: mapName
data:
name: Name
type: text_field
tracker: $maps
flags: [ mandatory, list, title, link, searchable ]
-
type: tracker_field
ref: mapLegend
data:
name: Legend
type: text_field
tracker: $maps
flags: [ mandatory, list, searchable ]
-
type: tracker_field
ref: mapDescription
data:
name: Description
type: text_area
tracker: $maps
flags: [ searchable ]
-
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
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 ]
-
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: instructions_page
data:
name: Instructions
description: Profile Instructions
lang: en
content: wikicontent:CartoGraf_Instructions
-
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_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
-
type: wiki_page
ref: mapinfo_page
data:
name: MapInfo
content: wikicontent:CartoGraf_MapInfo
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.
- If you want a search box (until it appears in the design), put
{module name=map_search_location}
in the AppFrame at CartoGraf_Map.
Questions
- Meta data about maps
- No current way to edit after creation
- Should we add a description text area which will end up in the space instead of "placeholder"?
- Should we add test users?
- Map Legend
- For zones
- For POI icons?
- Where does it go?
- Map title
- Where should layer selector go?
- Is there any point for the "Editable" and "Markers" checkboxes currently in tools?
Bugs
- Drawing
- 2012-05-23: doesn't work on Street View images that are in pop-up (video sent to luci)
- 2012-05-23: Registered users don't have draw on image button
- 2012-05-23: Drawing works, but when you go back to view, SVG layer is visible but background in gone (but if you edit, it's OK)
- 2012-05-23: Drawing inteface is cluttered (too bigs, too many scrollbars)
- Maps
- 2012-05-23: IE9 is fine with OpenStreetMap but not the 3 Google layers
- 2012-05-23: Left hand grab and zoom icons should remain when in StreetView, TrackerInput and Draw mode
Todos
- Bigger icons
- Fix Search
- Need a blank layer (to show drawings without the distraction of the map)
- Permit deletion of own entries and own zones
- Sharing & map selection: improve interface
- Add search box (which is currently in the tools section)
- Add colors to the current lines and zones
- Is it colored with legend or we have meta-data like markers?
- If it's not like markers, we should remove some of the current fields