189 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | 
						|
<!--
 | 
						|
 * WYMeditor : what you see is What You Mean web-based editor
 | 
						|
 * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
 | 
						|
 * Dual licensed under the MIT (MIT-license.txt)
 | 
						|
 * and GPL (GPL-license.txt) licenses.
 | 
						|
 *
 | 
						|
 * For further information visit:
 | 
						|
 *        http://www.wymeditor.org/
 | 
						|
 *
 | 
						|
 * File Name:
 | 
						|
 *        15-rdfa-editor.html
 | 
						|
 *        RDFa editor implementation example page.
 | 
						|
 *        See the documentation for more info.
 | 
						|
 *
 | 
						|
 * File Authors:
 | 
						|
 *        Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
 | 
						|
-->
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 | 
						|
<title>RDFa editor</title>
 | 
						|
<style type="text/css">
 | 
						|
    /* visual feedback */
 | 
						|
    .about         { background-color: #f99; }
 | 
						|
    .dc_creator    { background-color: #9f9; }
 | 
						|
    .dc_title      { background-color: #9ff; }
 | 
						|
    .foaf_Person   { background-color: #69c; }
 | 
						|
    .foaf_name     { background-color: #99c; }
 | 
						|
    .foaf_homepage { background-color: #c9c; }
 | 
						|
    .foaf_mbox     { background-color: #c6c; }
 | 
						|
    .foaf_phone    { background-color: #c3c; }
 | 
						|
</style>
 | 
						|
<script type="text/javascript" src="../jquery/jquery.js"></script>
 | 
						|
<script type="text/javascript" src="../wymeditor/jquery.wymeditor.min.js"></script>
 | 
						|
 | 
						|
<script type="text/javascript">
 | 
						|
 | 
						|
/*EXTEND THE XHTML PARSER*/
 | 
						|
/*************************/
 | 
						|
 | 
						|
//Add the RDFa attributes
 | 
						|
WYMeditor.XhtmlValidator._attributes['core']['attributes'].push(
 | 
						|
    'rel',
 | 
						|
    'rev',
 | 
						|
    'content',
 | 
						|
    'href',
 | 
						|
    'src',
 | 
						|
    'about',
 | 
						|
    'property',
 | 
						|
    'resource',
 | 
						|
    'datatype',
 | 
						|
    'typeof');
 | 
						|
 | 
						|
//Add the 'standard' vocabularies
 | 
						|
WYMeditor.XhtmlValidator._attributes['core']['attributes'].push(
 | 
						|
    'xmlns:biblio',
 | 
						|
    'xmlns:cc',
 | 
						|
    'xmlns:dbp',
 | 
						|
    'xmlns:dbr',
 | 
						|
    'xmlns:dc',
 | 
						|
    'xmlns:ex',
 | 
						|
    'xmlns:foaf',
 | 
						|
    'xmlns:rdf',
 | 
						|
    'xmlns:rdfs',
 | 
						|
    'xmlns:taxo',
 | 
						|
    'xmlns:xhv',
 | 
						|
    'xmlns:xsd');
 | 
						|
 | 
						|
//Overwrite the <a> attributes 'rel' and 'rev'
 | 
						|
WYMeditor.XhtmlValidator._tags['a'] = {
 | 
						|
    "attributes": {
 | 
						|
        "0":"charset",
 | 
						|
        "1":"coords",
 | 
						|
        "2":"href",
 | 
						|
        "3":"hreflang",
 | 
						|
        "4":"name",
 | 
						|
        "5":"rel",
 | 
						|
        "6":"rev",
 | 
						|
        "shape":/^(rect|rectangle|circ|circle|poly|polygon)$/,
 | 
						|
        "7":"type"
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
/*END EXTEND*/
 | 
						|
/************/
 | 
						|
 | 
						|
jQuery(function() {
 | 
						|
 | 
						|
    jQuery('.wymeditor').wymeditor({
 | 
						|
        stylesheet: 'wym_stylesheet.css',
 | 
						|
        html: '<h2 class="dc_title" property="dc:title">The trouble with Bob<\/h2><h3 class="dc_creator" property="dc:creator">Alice<\/h3>'
 | 
						|
            + '<p>The trouble with Bob is that he takes much better photos than I do.<\/p>'
 | 
						|
            + '<p class="foaf_Person" typeof="foaf:Person">'
 | 
						|
            + '<strong class="foaf_name" property="foaf:name">Alice Birpemswick<\/strong><br \/>'
 | 
						|
            + 'Email: <a class="foaf_mbox" rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com<\/a><br \/>'
 | 
						|
            + 'Phone: <a class="foaf_phone" rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332<\/a>'
 | 
						|
            + '<\/p>',
 | 
						|
 | 
						|
        postInit: function(wym) {
 | 
						|
 | 
						|
            //set the classes panel as dropdown
 | 
						|
            jQuery(wym._box).find('div.wym_classes').hide();
 | 
						|
 | 
						|
            //construct the panel
 | 
						|
            jQuery(wym._box).find('div.wym_area_right')
 | 
						|
                .append('<div class="wym_attributes wym_section wym_panel"><\/div>')
 | 
						|
                .children(':last')
 | 
						|
                .append('<h2>Attributes<\/h2>')
 | 
						|
                .append('<ul><\/ul>')
 | 
						|
                .children(':last')
 | 
						|
                //store the attribute name/value in the button class (better idea?)
 | 
						|
                .append('<li><a class="about" title="What the data is about." href="#">ABOUT: about #value#<\/a><\/li>')
 | 
						|
                .append('<li><a class="property dc_title" title="A name by which the resource is formally known." href="#">TITLE: prop dc:title<\/a><\/li>')
 | 
						|
                .append('<li><a class="property dc_creator" title="An entity primarily responsible for making the resource." href="#">CREATOR: prop dc:creator<\/a><\/li>')
 | 
						|
                .append('<li><a class="typeof foaf_Person" title="A person." href="#">PERSON: typeof foaf:Person<\/a><\/li>')
 | 
						|
                .append('<li><a class="property foaf_name" title="A name for some thing." href="#">NAME: property foaf:name<\/a><\/li>')
 | 
						|
                .append('<li><a class="rel foaf_homepage" title="A homepage for some thing." href="#">HOMEPAGE: rel foaf:homepage<\/a><\/li>')
 | 
						|
                .append('<li><a class="rel foaf_mbox" title="A personal mailbox." href="#">MAILBOX: rel foaf:mbox<\/a><\/li>')
 | 
						|
                .append('<li><a class="rel foaf_phone" title="A phone." href="#">PHONE: rel foaf:phone<\/a><\/li>')
 | 
						|
                .find('a')
 | 
						|
                //event handlers
 | 
						|
                .click( function() {
 | 
						|
 | 
						|
                    //init
 | 
						|
                    var selected  = wym.selected(),                         //selected container
 | 
						|
                        classes   = jQuery(this).attr('class').split(' '),  //clicked button classes
 | 
						|
                        attrName  = classes[0],                             //attribute name, e.g. 'property'
 | 
						|
                        attrValue = classes.length > 1 ? classes[1] : null; //attribute value, if available, e.g. dc_title
 | 
						|
 | 
						|
                    //the attribute already exists, remove it
 | 
						|
                    if( jQuery(selected).attr(attrName) != undefined && jQuery(selected).attr(attrName) != '') {
 | 
						|
                        WYMeditor.console.log('attribute already exists, remove it:', attrName, jQuery(selected).attr(attrName));
 | 
						|
                        if( classes.length == 1 || jQuery(selected).attr(attrName) == attrValue.replace('_', ':') )
 | 
						|
                            jQuery(selected).removeAttr(attrName).removeClass(attrName).removeClass(attrValue);
 | 
						|
 | 
						|
                    //else, add it (and the feedback class)
 | 
						|
                    } else {
 | 
						|
                        WYMeditor.console.log('attribute does not exist, add it:', attrName, attrValue);
 | 
						|
                        if( classes.length > 1 ) { //value available
 | 
						|
                            jQuery(selected).attr(attrName, attrValue.replace('_', ':')).addClass(attrValue);
 | 
						|
                        } else { //value not available
 | 
						|
                            attrValue = prompt('Value', '');
 | 
						|
                            if(attrValue != null) jQuery(selected).attr(attrName, attrValue).addClass(attrName);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                });
 | 
						|
 | 
						|
            //feedback css
 | 
						|
            var rules = [
 | 
						|
              { name: '.about',
 | 
						|
                css: 'background-color: #f99;' },
 | 
						|
              { name: '.dc_creator',
 | 
						|
                css: 'background-color: #9f9;' },
 | 
						|
              { name: '.dc_title',
 | 
						|
                css: 'background-color: #9ff;' },
 | 
						|
              { name: '.foaf_Person',
 | 
						|
                css: 'background-color: #69c;' },
 | 
						|
              { name: '.foaf_name',
 | 
						|
                css: 'background-color: #99c;' },
 | 
						|
              { name: '.foaf_homepage',
 | 
						|
                css: 'background-color: #c9c;' },
 | 
						|
              { name: '.foaf_mbox',
 | 
						|
                css: 'background-color: #c6c;' },
 | 
						|
              { name: '.foaf_phone',
 | 
						|
                css: 'background-color: #c3c;' }
 | 
						|
            ];
 | 
						|
            wym.addCssRules( wym._doc, rules);
 | 
						|
        }
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
</head>
 | 
						|
 | 
						|
<body>
 | 
						|
<h1>WYMeditor based RDFa editor (proof of concept)</h1>
 | 
						|
<p><a href="http://www.wymeditor.org/">WYMeditor</a> is a web-based XHTML WYSIWYM editor.</p>
 | 
						|
<p>More information on the forum: <a href="http://forum.wymeditor.org/forum/viewtopic.php?f=3&p=2030">WYMeditor for RDFa</a></p>
 | 
						|
<form method="post" action="">
 | 
						|
<textarea class="wymeditor"></textarea>
 | 
						|
<input type="submit" class="wymupdate" />
 | 
						|
</form>
 | 
						|
 | 
						|
</body>
 | 
						|
 | 
						|
</html>
 |