Parameters : $params['accept'] provides the content-type to be rendered, $params['groupname'] the project name, $params['group_id'] the project ID
Description: returns in $params['content'] an alternate content for /projects/ page and
in $params['content_type'] the actual content-type to return
-
+
Hook Name : content_negociated_user_home
Parameters : $params['accept'] provides the content-type to be rendered, $params['username'] the user name
Description: returns in $params['content'] an alternate content for /users/ page and
Parameters : $params['script_name'] contains the SCRIPT_NAME (filtered to work only on /projects or /users for the moment)
Description: returns alternate representations for a particular page in $params['results'] which is populated by the hook users
+ Hook Name : content_negociated_projects_list
+ Parameters : $params['accept'] provides the content-type to be rendered
+ Description: returns in $params['content'] an alternate content for /projects page and
+ in $params['content_type'] the actual content-type to return
+
TODO (nerville) : document display_hierarchy
TODO (lolando ?) : document role_normalize, role_translate_strings, role_has_permission, role_get_setting, list_roles_by_permission
TODO : document project_link_with_tooltip
}
/**
- * Declares itself as accepting RDF XML on /users
+ * Declares itself as accepting RDF XML on /projects/...
* @param unknown_type $params
*/
function script_accepted_types (&$params) {
}
/**
- * Outputs user's FOAF profile
+ * Outputs project's DOAP profile
* @param unknown_type $params
*/
function content_negociated_project_home (&$params) {
'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
'rdfs' => 'http://www.w3.org/2000/01/rdf-schema#',
'doap' => 'http://usefulinc.com/ns/doap#',
- 'dcterms' => 'http://purl.org/dc/terms/' /*,
- 'oslc' => 'http://open-services.net/ns/core#' */
+ 'dcterms' => 'http://purl.org/dc/terms/'
);
-
+
$conf = array(
'ns' => $ns
- /*,
- 'serializer_type_nodes' => true*/
);
$res = ARC2::getResource($conf);
- $res->setURI('');
+ $res->setURI(util_make_url_g($projectname, $group_id));
- //$res->setRel('rdf:type', 'doap:Project');
+ // $res->setRel('rdf:type', 'doap:Project');
rdfutils_setPropToUri($res, 'rdf:type', 'doap:Project');
-
+
$res->setProp('doap:name', $projectname);
$res->setProp('doap:shortdesc', $project_shortdesc);
if($project_description) {
$res->setProp('doap:description', $project_description);
}
+ $res->setProp('doap:homepage', $project->getHomePage());
+ $tags = array();
if($tags_list) {
$tags = split(', ',$tags_list);
$res->setProp('dcterms:subject', $tags);
}
-
+
// Now, we need to collect complementary RDF descriptiosn of the project via other plugins
// invoke the 'project_rdf_metadata' hook so as to complement the RDF description
$hook_params = array();
-
$hook_params['prefixes'] = array();
foreach($ns as $prefix => $url) {
$hook_params['prefixes'][$url] = $prefix;
}
- /*
- $hook_params['prefixes'] = array(
- 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' => 'rdf',
- 'http://www.w3.org/2000/01/rdf-schema#' => 'rdfs',
- 'http://usefulinc.com/ns/doap#' => 'doap',
- 'http://purl.org/dc/terms/' => 'dcterms'
- );
- */
$hook_params['group'] = $group_id;
-
// pass the resource in case it could be useful (read-only in principle)
$hook_params['in_Resource'] = $res;
-
$hook_params['out_Resources'] = array();
-
plugin_hook_by_reference('project_rdf_metadata', $hook_params);
// add new prefixes to the list
}
}
+ // merge the two sets of triples
$merged_index = $res->index;
foreach($hook_params['out_Resources'] as $out_res) {
$merged_index = ARC2::getMergedIndex($merged_index, $out_res->index);
/* Serialize a resource index */
$doc = $ser->getSerializedIndex($merged_index);
- $params['content'] = $doc;
+ $params['content'] = $doc . "\n";
}
}
*/
function alt_representations (&$params) {
$script_name = $params['script_name'];
- if ($script_name == '/projects') {
+ $php_self = $params['php_self'];
+ // really trigger only for real projects descriptions, not for the projects index
+ if ( ($script_name == '/projects') && (($php_self != '/projects') && ($php_self != '/projects/')) ) {
$params['return'][] = '<link rel="meta" type="application/rdf+xml" title="DOAP RDF Data" href=""/>';
}
}
//
$default_content_type = 'text/html';
-$script='project_home';
-$content_type = util_negociate_alternate_content_types($script, $default_content_type);
if (!$group_id || !$project) {
- exit_no_group();
+
+ $script = 'projects_list';
+ $content_type = util_negociate_alternate_content_types($script, $default_content_type);
+
+ if($content_type != $default_content_type) {
+ $hook_params = array();
+ $hook_params['accept'] = $content_type;
+ $hook_params['return'] = '';
+ $hook_params['content_type'] = '';
+ plugin_hook_by_reference('content_negociated_projects_list', $hook_params);
+ if($hook_params['content_type'] != ''){
+ header('Content-type: '. $hook_params['content_type']);
+ echo $hook_params['content'];
+ }
+ else {
+ header('HTTP/1.1 406 Not Acceptable',true,406);
+ exit(0);
+ }
+ } else {
+ exit_no_group();
+ }
} else {
$subpage = getStringFromRequest('subpage');
header("Location: ".account_group_cvsweb_url($project->getUnixName()));
exit();
} else {
+
+ $script='project_home';
+ $content_type = util_negociate_alternate_content_types($script, $default_content_type);
+
// if a custom content-type is selected, then redirect to plugin's rendering
if($content_type != $default_content_type) {
$hook_params = array();