Presentation Transcript
Built in 60: Build a Simple Wiki with Web Scripts :Built in 60: Build a Simple Wiki with Web Scripts Luis Sala
Senior Director of Solutions Engineering
www.alfresco.com
Introduction :Introduction Luis Sala, Senior Director of Solutions Engineeringhttp://blogs.alfresco.com/luissala
Former Chief Solutions Architect at Epicentric and Principal SE at Vignette
Agenda :Agenda Web Script Overview
Web Script-based Wiki
Other Wiki Options
Quick Demonstration
Q & A
What are Web Scripts? :What are Web Scripts? Web Scripting Agile Script-Driven MVC
Multiple uses
Roll your own API
Create new UI components
Create portlets/widgets
Expose WCM/AVM features
Script-based implementation
Server-side JavaScript
Freemarker
Limited only by your imagination
Integration: Create a mashup
Search: Exposed to other systems.
Rich Internet Applications
Cross-language
Cross-platform JavaScript (Controller) Freemarker (View) Alfresco Repository (Model)
Components of a Web Script :Components of a Web Script XML Descriptor
URI Templates
Authentication Requirements
Transactional Requirements
One or more server-side JavaScript files (Controller)
One for each HTTP method (GET, PUT, POST, etc.)
One or more Freemarker templates (View)
One for each HTTP method and desired output type (HTML, XML, JSON, etc.)
Two types of Web Scripts… :Two types of Web Scripts… Data Web Script
RESTstyle / RESTful URL
Returns structured data:
XML
JSON
CSV
UI Web Script
Renders self-contained UI.
Can leverage Data Web Scripts.
Web Scripts as Gadgets :Web Scripts as Gadgets Virtually any Web Script can be a gadget by using its URL.
http://HOST:PORT/alfresco/wcs/SCRIPT
Developers have many choices:
HTML
AJAX
JavaScript
JSON
Any combination of the above. JavaScript (Controller) Freemarker (View) Alfresco Repository (Model) iGoogle HTMLAJAXJSON
wiki.get.js (part 1) :wiki.get.js (part 1) // Extract the Wiki Space DBID from PATH
// Eg. http://localhost/alfresco/s/wiki/1234
var wikiId = parseInt(url.extension);
var nodes = search.luceneSearch("@sys\\:node-dbid\:" + wikiId)
var pageName = args["p"];
if (pageName == null || pageName == "") {
pageName = "home";
} // end if
var pageNode = wikiSpace.childByNamePath(pageName);
wiki.get.js (part 2) :wiki.get.js (part 2) // Get the designated page or home page.
if (pageNode == null) {
pageNode = wikiSpace.createFile(pageName);
pageNode.content = "This page has not yet been edited. Please click on the 'Edit' link to modify."
pageNode.save();
}
// Translate WikiLinks
var WIKI_LINK = /\[\[([^\|\]]*)(\|([^\]]+))?\]\]/g;
var content = (pageNode.content + "").replace(WIKI_LINK, "$1");
model.wikiId = wikiId + "";
model.pageNode = pageNode;
model.pageName = pageNode.name;
model.content = content;
Other Wiki Alternatives :Other Wiki Alternatives MediaWiki Integration
Available since Alfresco 2.1
Alfresco Extension for MediaWiki stores content into Alfresco
Coming in 3.0: MediaWiki inside Alfresco (Quercus)
Wiki Article – MediaWiki Preview :Wiki Article – MediaWiki Preview
Wiki Article – MediaWiki Edit :Wiki Article – MediaWiki Edit
Wiki Content stored in Wiki Spaces :Wiki Content stored in Wiki Spaces
Repository with Wiki content and images :Repository with Wiki content and images
Wiki Article Details Page (with Template) :Wiki Article Details Page (with Template)
Versioning and Workflow :Versioning and Workflow
Edit Content :Edit Content
Slide 18:DEMO
Q&A and Resources :Q&A and Resources 03.04.08 Q&A and Resources Any Questions?
Resources:
wiki.alfresco.com/wiki/Web_Scripts
wiki.alfresco.com/wiki/JavaScript_API
Join the Content Community
alfresco.com
Participate in the Developer Challenge
alfresco.com/partners/programme/webscripts/
Join the Alfresco Facebook Group
facebook.com/group.php?gid=6063383762
Upcoming Presentations :Upcoming Presentations Upcoming Presentations Every Friday: Tech Talk Live
wiki.alfresco.com/wiki/live
Upcoming “Built in 60” Presentations:
Mac Dashboard Widgets
Digital Asset Management
Facebook Integration
Video Transcoding with Alfresco
Amazon S3 Integration
Other Upcoming Webinars:
June 12: Simple Document Management
June 19: Clustering with Alfresco
July 2: Simple Search and Tagging
www.alfresco.com/about/events/
End :End
Shapes & Colors :Shapes & Colors Normal Text Bullet
Sub-Bullet Normal Text Normal Text