This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".
The branch, feature/twig-template-engine has been updated
via de2febc46f53dc62c71cc599b4cd42f15b0a6a65 (commit)
via 76f619a0c95e3d3986a4ba2e048b2e4b37a17fdb (commit)
via 183661e4a8c7f7f45cb73cc34e305bc8fa63af5e (commit)
via 1aba55b62b82a2d487ece51f7f0192d97e979788 (commit)
via 484c35dd0f727ec2aca0cedf56e447c7604aa63a (commit)
via 385f53806060dfc82b90e1efb08c092e4b1fe11f (commit)
via 547a4a04fc64ab7df68e4fc6168d90b5b01b8424 (commit)
via 7e8189ee4935d660b974c7fdb0341f52cfe139e7 (commit)
via d85b7495b80c496c986d8ebb47195a58678fdc7d (commit)
from 87a909275fa230e35e779512ff0f2c91dc6a579b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit de2febc46f53dc62c71cc599b4cd42f15b0a6a65
Author: Roland Mas <[email protected]>
Date: Sat Jun 6 22:10:39 2015 +0200
Implement headerStart in Twig
diff --git a/src/docs/README.Plugins b/src/docs/README.Plugins
index bca282a..5ad8b41 100644
--- a/src/docs/README.Plugins
+++ b/src/docs/README.Plugins
@@ -325,8 +325,6 @@ had been written.
Description: Provides a place to add inline Javascript into the page.
The output (in $params['return']) of the hook should be pure
Javascript, as it will
be placed within an existing <script> block.
- [TODO: The output of the hook appears after the closing SGML comment marker
- and before the closing </script> element. Is this what is really indended?]
Hook Name : javascript_file
Locations : www/include/Layout.class.php (function headerJS)
@@ -535,7 +533,7 @@ TODO : document Auth plugins :
Hook Name : alt_representations
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
+ Description: returns alternate representations for a particular page in
$params['results'] which is populated by the hook users (in an array of arrays
with rel/type/title/href keys)
Hook Name : content_negociated_projects_list
Parameters : $params['accept'] provides the content-type to be rendered
diff --git a/src/plugins/admssw/include/admsswPlugin.class.php
b/src/plugins/admssw/include/admsswPlugin.class.php
index 9b77fae..789c483 100644
--- a/src/plugins/admssw/include/admsswPlugin.class.php
+++ b/src/plugins/admssw/include/admsswPlugin.class.php
@@ -126,16 +126,34 @@ projects on /projects URLs with content-negotiation
$script_name = $params['script_name'];
$php_self = $params['php_self'];
if ($php_self == '/softwaremap/trove_list.php') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
("/plugins/admssw/trove.php") .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url
("/plugins/admssw/trove.php") .'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/plugins/admssw/trove.php"));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/plugins/admssw/trove.php"));
}
elseif ($script_name == '/softwaremap') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
("/projects") .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url
("/projects") .'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/projects"));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/projects"));
}
else if($script_name == '/projects') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
($php_self) .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url ($php_self)
.'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ($php_self));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ($php_self));
}
}
diff --git a/src/plugins/doaprdf/include/doaprdfPlugin.class.php
b/src/plugins/doaprdf/include/doaprdfPlugin.class.php
index 87ed23a..c4a14e3 100644
--- a/src/plugins/doaprdf/include/doaprdfPlugin.class.php
+++ b/src/plugins/doaprdf/include/doaprdfPlugin.class.php
@@ -187,8 +187,14 @@ with content-negotiation (application/rdf+xml).");
$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="alternate"
type="application/rdf+xml" title="DOAP RDF Data" href=""/>';
- $params['return'][] = '<link rel="alternate"
type="test/turtle" title="DOAP RDF Data" href=""/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"DOAP RDF Data",
+
"href"=>util_make_url ($php_self));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"DOAP RDF Data",
+
"href"=>util_make_url ($php_self));
}
}
diff --git a/src/plugins/forumml/include/forummlPlugin.class.php
b/src/plugins/forumml/include/forummlPlugin.class.php
index bd6070f..b60d1db 100644
--- a/src/plugins/forumml/include/forummlPlugin.class.php
+++ b/src/plugins/forumml/include/forummlPlugin.class.php
@@ -183,7 +183,7 @@ class ForumMLPlugin extends Plugin {
//$request =& HTTPRequest::instance();
if (strpos($_SERVER['REQUEST_URI'], $this->getPluginPath()) ===
0) {
//echo '<link rel="stylesheet" type="text/css"
href="'.$this->getThemePath().'/css/style.css" />'."\n";
- echo '<script type="text/javascript"
src="'.$this->getPluginPath().'/scripts/forumml.js"></script>'."\n";
+
use_javascript($this->getPluginPath().'/scripts/forumml.js');
}
}
diff --git a/src/plugins/hudson/include/hudsonPlugin.class.php
b/src/plugins/hudson/include/hudsonPlugin.class.php
index 69def0e..5d40613 100644
--- a/src/plugins/hudson/include/hudsonPlugin.class.php
+++ b/src/plugins/hudson/include/hudsonPlugin.class.php
@@ -43,7 +43,6 @@ control over it to the project administrator.");
//$this->_addHook("userisactivecheckbox") ; // The "use ..."
checkbox in user account
//$this->_addHook("userisactivecheckboxpost") ; //
$this->_addHook("project_admin_plugins"); // to show up in the
admin page fro group
- $this->_addHook('javascript', false);
$this->_addHook('cssfile', 'cssFile', false);
$this->_addHook('group_delete', 'projectIsDeleted', false);
$this->_addHook('widget_instance', 'myPageBox', false);
diff --git a/src/www/include/Layout.class.php b/src/www/include/Layout.class.php
index abd34e5..4a204b8 100644
--- a/src/www/include/Layout.class.php
+++ b/src/www/include/Layout.class.php
@@ -177,7 +177,7 @@ class Layout extends Error {
if (file_exists($filename)) {
$js .= '?'.date ("U", filemtime($filename));
} else {
- $filename = str_replace('/scripts/',
$GLOBALS['fusionforge_basedir'].'/vendor/', $js);
+ $filename = preg_replace(',^/scripts/',
$GLOBALS['fusionforge_basedir'].'/vendor/', $js);
if (file_exists($filename)) {
$js .= '?'.date ("U",
filemtime($filename));
}
@@ -341,23 +341,25 @@ class Layout extends Error {
*/
function headerJS() {
echo html_e('script', array('type' => 'text/javascript', 'src'
=> util_make_uri('/js/common.js')), '', false);
- echo ' <script type="text/javascript">/* <![CDATA[ */';
- plugin_hook ("javascript");
- echo '
- /* ]]> */</script>';
- plugin_hook ("javascript_file");
- echo $this->getJavascripts();
-
// invoke the 'javascript' hook for custom javascript addition
$params = array('return' => false);
plugin_hook("javascript",$params);
$javascript = $params['return'];
if($javascript) {
- echo '<script type="text/javascript">';
+ echo ' <script type="text/javascript">/* <![CDATA[ */';
echo $javascript;
echo '
- </script>';
+ /* ]]> */</script>';
}
+
+ $params = array('return' => array());
+ plugin_hook("javascript_file",$params);
+ $javascript = $params['return'];
+ plugin_hook ("javascript_file");
+ foreach ($params['return'] as $js) {
+ $this->javascripts[] = $js;
+ }
+ echo $this->getJavascripts();
}
/**
@@ -387,7 +389,8 @@ class Layout extends Error {
plugin_hook_by_reference('alt_representations',
$params);
foreach($params['return'] as $link) {
- echo " $link"."\n";
+ printf('<link rel="%s" type="%s" title="%s"
href="%s" />',
+
$link['rel'],$link['type'],$link['title'],$link['href']);
}
}
}
diff --git a/src/www/themes/funky-twig/Theme.class.php
b/src/www/themes/funky-twig/Theme.class.php
index 8752fef..ea8e21e 100644
--- a/src/www/themes/funky-twig/Theme.class.php
+++ b/src/www/themes/funky-twig/Theme.class.php
@@ -169,12 +169,91 @@ class Theme extends Layout {
return $template->render($vars);
}
function header($params) {
- // TODO
- return parent::header($params);
+ $this->headerStart($params);
+ $this->bodyHeader($params);
}
function headerStart($params) {
- // TODO
- return parent::headerStart($params);
+ $this->headerHTMLDeclaration();
+
+ $template = $this->twig->loadTemplate('headerStart.html');
+
+ $vars = array();
+
+ $vars['forge_name'] = forge_get_config('forge_name');
+ if (isset($params['title'])) {
+ $vars['title'] = $params['title'];
+ }
+ if (isset($params['meta-description'])) {
+ $vars['meta_description'] = $params['meta-description'];
+ }
+ if (isset($params['meta-keywords'])) {
+ $vars['meta keywords'] = $params['meta-keywords'];
+ }
+ $vars['favicon_url'] = util_make_uri('/images/icon.png');
+ $vars['search_url'] =
util_make_uri('/export/search_plugin.php');
+
+ $vars['rssfeeds'] = array(
+ array('title' => forge_get_config ('forge_name').' -
Project News Highlights RSS',
+ 'url' =>
util_make_uri('/export/rss_sfnews.php')),
+ array('title' => forge_get_config ('forge_name').' -
Project News Highlights RSS 2.0',
+ 'url' =>
util_make_uri('/export/rss20_news.php')),
+ array('title' => forge_get_config ('forge_name').' -
New Projects RSS',
+ 'url' =>
util_make_uri('/export/rss_sfprojects.php')),
+ );
+ if (isset($GLOBALS['group_id'])) {
+ $vars['rssfeeds'][] = array('title' => forge_get_config
('forge_name') . ' - New Activity RSS',
+
'url' =>
util_make_uri('/export/rss20_activity.php?group_id='.$GLOBALS['group_id']));
+ }
+
+ plugin_hook("javascript_file");
+ plugin_hook("css_file");
+ $vars['javascripts'] = array();
+ foreach ($this->javascripts as $js) {
+ $vars['javascripts'][] = util_make_uri($js);
+ }
+
+ $sheets = array();
+ foreach ($this->stylesheets as $c) {
+ $sheet = array('url' => util_make_uri($c['css']));
+ if ($c['media']) {
+ $sheet['media'] = $c['media'];
+ } else {
+ $sheet['media'] = '';
+ }
+ $sheets[] = $sheet;
+ }
+ $vars['stylesheets'] = $sheets;
+
+ $ff = new FusionForge();
+ $vars['software_name'] = $ff->software_name;
+ $vars['software_version'] = $ff->software_version;
+
+
+
+ $script_name = getStringFromServer('SCRIPT_NAME');
+ $end = strpos($script_name,'/',1);
+ if($end) {
+ $script_name = substr($script_name,0,$end);
+ }
+
+ // Only activated for /projects, /users or /softwaremap for the
moment
+ $vars['alt_representations'] = array();
+ if ($script_name == '/projects' || $script_name == '/users' ||
$script_name == '/softwaremap') {
+
+ $php_self = getStringFromServer('PHP_SELF');
+
+ // invoke the 'alt_representations' hook to add
potential 'alternate' links (useful for Linked Data)
+ // cf. http://www.w3.org/TR/cooluris/#linking
+ $params = array('script_name' => $script_name,
+ 'php_self' => $php_self,
+ 'return' => array());
+
+ plugin_hook_by_reference('alt_representations',
$params);
+
+ $vars['alt_representations'] = $params['return'];
+ }
+
+ print $template->render($vars);
}
function headerHTMLDeclaration() {
global $sysDTDs, $sysXMLNSs;
@@ -192,38 +271,6 @@ class Theme extends Layout {
print $template->render($vars);
}
- function headerTitle($params) {
- // TODO
- return parent::headerTitle($params);
- }
- function headerFavIcon() {
- // TODO
- return parent::headerFavIcon();
- }
- function headerRSS() {
- // TODO
- return parent::headerRSS();
- }
- function headerSearch() {
- // TODO
- return parent::headerSearch();
- }
- function headerCSS() {
- // TODO
- return parent::headerCSS();
- }
- function headerJS() {
- // TODO
- return parent::headerJS();
- }
- function headerLinkedDataAutodiscovery() {
- // TODO
- return parent::headerLinkedDataAutodiscovery();
- }
- function headerForgepluckerMeta() {
- // TODO
- return parent::headerForgepluckerMeta();
- }
function bodyHeader($params){
// TODO
return parent::bodyHeader($params);
diff --git a/src/www/themes/funky-twig/templates/ListTableTop.html
b/src/www/themes/funky-twig/templates/ListTableTop.html
index b534a80..f22b875 100644
--- a/src/www/themes/funky-twig/templates/ListTableTop.html
+++ b/src/www/themes/funky-twig/templates/ListTableTop.html
@@ -1,5 +1,5 @@
<table class="listing {% if class %}{{ class }}{% else %}full{% endif %}"
id="{{id}}">
- {% if data|count %}
+ {% if data|length %}
<thead>
<tr>
{% for item in data %}
diff --git a/src/www/themes/funky-twig/templates/headerStart.html
b/src/www/themes/funky-twig/templates/headerStart.html
new file mode 100644
index 0000000..58b3f37
--- /dev/null
+++ b/src/www/themes/funky-twig/templates/headerStart.html
@@ -0,0 +1,38 @@
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ {% if meta_description %}
+ <meta name="description" content="{{ meta_description }}" />
+ {% endif %}
+ {% if meta_keywords %}
+ <meta name="keywords" content="{{ meta_keywords }}" />
+ {% endif %}
+ {% if title %}
+ <title>{{ forge_name }}: {{ title }}</title>
+ {% else %}
+ <title>{{ forge_name }}</title>
+ {% endif %}
+ <link rel="icon" type="image/png" href="{{ favicon_url }}" />
+ <link rel="shortcut icon" type="image/png" href="{{ favicon_url }}" />
+
+ {% for f in rssfeeds %}
+ <link rel="alternate" title="{{ f.title }}" href="{{ f.url }}"
type="application/rss+xml" />
+ {% endfor %}
+
+ <link rel="search" title="{{ forge_name }}" href="{{ search_url }}"
type="application/opensearchdescription+xml" />
+
+ {% for s in javascripts %}
+ <script type="text/javascript" src="{{ s }}"></script>
+ {% endfor %}
+
+ {% for s in stylesheets %}
+ <link type="text/css" href="{{ s.url }}" {% if m %} media="{{ s.media }}"
{% endif %} />
+ {% endfor %}
+
+ <meta name="Forge-Identification" content="{{ software_name }}:{{
software_version }}" />
+
+ {% for a in alt_representations %}
+ <link type="{{ a.type }}" href="{{ a.href }}" rel="{{ a.rel }}" title="{{
a.title }}" />
+ {% endfor %}
+
+ </head>
+ <body>
diff --git a/src/www/themes/funky-wOw/Theme.class.php
b/src/www/themes/funky-wOw/Theme.class.php
index d4618e4..786d938 100644
--- a/src/www/themes/funky-wOw/Theme.class.php
+++ b/src/www/themes/funky-wOw/Theme.class.php
@@ -374,6 +374,8 @@ class Theme extends Layout {
echo "\n".'//]]'."\n";
echo html_ac(html_ap() -1);
}
+ // invoke the 'javascript_file' hook for custom javascript
addition
+ plugin_hook("javascript_file",$params);
html_use_storage();
html_use_coolfieldset();
html_use_jqueryui();
diff --git a/src/www/themes/funky/Theme.class.php
b/src/www/themes/funky/Theme.class.php
index e86fd77..86460d1 100644
--- a/src/www/themes/funky/Theme.class.php
+++ b/src/www/themes/funky/Theme.class.php
@@ -373,6 +373,15 @@ class Theme extends Layout {
echo "\n".'//]]'."\n";
echo html_ac(html_ap() -1);
}
+
+ // invoke the 'javascript_file' hook for custom javascript
addition
+ $params = array('return' => array());
+ plugin_hook("javascript_file",$params);
+ $javascript = $params['return'];
+ plugin_hook ("javascript_file");
+ foreach ($params['return'] as $js) {
+ $this->javascripts[] = $js;
+ }
html_use_storage();
html_use_coolfieldset();
html_use_jqueryui();
commit 76f619a0c95e3d3986a4ba2e048b2e4b37a17fdb
Merge: 87a9092 183661e
Author: Roland Mas <[email protected]>
Date: Sat Jun 6 22:09:18 2015 +0200
Merge branch 'master' into feature/twig-template-engine
-----------------------------------------------------------------------
Summary of changes:
autoinstall/common-backports | 3 +
src/CHANGES | 1 +
src/common/tracker/Artifact.class.php | 2 +-
src/docs/README.Plugins | 4 +-
src/plugins/admssw/include/admsswPlugin.class.php | 30 ++++--
.../doaprdf/include/doaprdfPlugin.class.php | 10 +-
.../forumml/include/forummlPlugin.class.php | 2 +-
src/plugins/hudson/include/hudsonPlugin.class.php | 1 -
src/plugins/scmgit/common/GitPlugin.class.php | 10 +-
.../common/scmgit_Widget_MyRepositories.class.php | 2 +-
src/plugins/scmsvn/common/SVNPlugin.class.php | 6 +-
src/www/include/Layout.class.php | 25 +++--
src/www/themes/funky-twig/Theme.class.php | 119 ++++++++++++++-------
.../themes/funky-twig/templates/ListTableTop.html | 2 +-
.../themes/funky-twig/templates/headerStart.html | 38 +++++++
src/www/themes/funky-wOw/Theme.class.php | 2 +
src/www/themes/funky/Theme.class.php | 9 ++
tests/buildbot/push-packages-to-repositories.sh | 2 +-
18 files changed, 196 insertions(+), 72 deletions(-)
create mode 100644 src/www/themes/funky-twig/templates/headerStart.html
diff --git a/autoinstall/common-backports b/autoinstall/common-backports
index 68d13b7..efddd0d 100644
--- a/autoinstall/common-backports
+++ b/autoinstall/common-backports
@@ -265,6 +265,9 @@ EOF
REMOVEDEPS=$DEPS
backport_rpm_from_fedora php-htmlpurifier-htmlpurifier
+ mkdir -p /usr/src/fusionforge/build/RPMS/
+ cp -r ~/rpmbuild/RPMS/* /usr/src/fusionforge/build/RPMS/
+
# TODO: postfix: rebuild from RHEL/CentOS sources with pgsql enabled,
# so we can test mta-postfix
}
diff --git a/src/CHANGES b/src/CHANGES
index de52f65..3f27b5f 100644
--- a/src/CHANGES
+++ b/src/CHANGES
@@ -4,6 +4,7 @@ FusionForge 6.0.1:
* SCM: fix commit privileges (*_scmro group membership) (Inria)
* FRS: display new releases first (Roland Mas, for Inria)
* Tracker: fix description re-html-ization when editing item (Inria)
+* Tracker: fix HTML entities in mail notifications (Inria)
* Widgets: MyProjects: only display active projects (Inria)
* SCM SVN: fix double-compression in ViewVC (Inria)
* Plugin scmhook: git commitemail: fix subject, handle special chars (Roland
Mas, for Inria)
diff --git a/src/common/tracker/Artifact.class.php
b/src/common/tracker/Artifact.class.php
index 6f0eaa9..e9a86ae 100644
--- a/src/common/tracker/Artifact.class.php
+++ b/src/common/tracker/Artifact.class.php
@@ -1607,7 +1607,7 @@ class Artifact extends Error {
$efd = $this->getExtraFieldDataText();
foreach ($efd as $efid => $ef) {
$body .= $this->marker('extra_fields', $changes, $efid);
- $body .= $ef["name"].": ".$ef["value"]."\n";
+ $body .= $ef["name"].":
".htmlspecialchars_decode($ef["value"])."\n";
}
$subject='['. $this->ArtifactType->Group->getUnixName() . '-' .
$name . ']' . $this->getStringID() .' '. util_unconvert_htmlspecialchars(
$this->getSummary() );
diff --git a/src/docs/README.Plugins b/src/docs/README.Plugins
index bca282a..5ad8b41 100644
--- a/src/docs/README.Plugins
+++ b/src/docs/README.Plugins
@@ -325,8 +325,6 @@ had been written.
Description: Provides a place to add inline Javascript into the page.
The output (in $params['return']) of the hook should be pure
Javascript, as it will
be placed within an existing <script> block.
- [TODO: The output of the hook appears after the closing SGML comment marker
- and before the closing </script> element. Is this what is really indended?]
Hook Name : javascript_file
Locations : www/include/Layout.class.php (function headerJS)
@@ -535,7 +533,7 @@ TODO : document Auth plugins :
Hook Name : alt_representations
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
+ Description: returns alternate representations for a particular page in
$params['results'] which is populated by the hook users (in an array of arrays
with rel/type/title/href keys)
Hook Name : content_negociated_projects_list
Parameters : $params['accept'] provides the content-type to be rendered
diff --git a/src/plugins/admssw/include/admsswPlugin.class.php
b/src/plugins/admssw/include/admsswPlugin.class.php
index 9b77fae..789c483 100644
--- a/src/plugins/admssw/include/admsswPlugin.class.php
+++ b/src/plugins/admssw/include/admsswPlugin.class.php
@@ -126,16 +126,34 @@ projects on /projects URLs with content-negotiation
$script_name = $params['script_name'];
$php_self = $params['php_self'];
if ($php_self == '/softwaremap/trove_list.php') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
("/plugins/admssw/trove.php") .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url
("/plugins/admssw/trove.php") .'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/plugins/admssw/trove.php"));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/plugins/admssw/trove.php"));
}
elseif ($script_name == '/softwaremap') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
("/projects") .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url
("/projects") .'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/projects"));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ("/projects"));
}
else if($script_name == '/projects') {
- $params['return'][] = '<link rel="alternate"
type="application/rdf+xml" title="ADMS.SW RDF Data" href="'. util_make_url
($php_self) .'"/>';
- $params['return'][] = '<link rel="alternate"
type="text/turtle" title="ADMS.SW RDF Data" href="'. util_make_url ($php_self)
.'"/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ($php_self));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"ADMS.SW RDF Data",
+
"href"=>util_make_url ($php_self));
}
}
diff --git a/src/plugins/doaprdf/include/doaprdfPlugin.class.php
b/src/plugins/doaprdf/include/doaprdfPlugin.class.php
index 87ed23a..c4a14e3 100644
--- a/src/plugins/doaprdf/include/doaprdfPlugin.class.php
+++ b/src/plugins/doaprdf/include/doaprdfPlugin.class.php
@@ -187,8 +187,14 @@ with content-negotiation (application/rdf+xml).");
$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="alternate"
type="application/rdf+xml" title="DOAP RDF Data" href=""/>';
- $params['return'][] = '<link rel="alternate"
type="test/turtle" title="DOAP RDF Data" href=""/>';
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"application/rdf+xml",
+
"title"=>"DOAP RDF Data",
+
"href"=>util_make_url ($php_self));
+ $params['return'][] = array("rel"=>"alternate",
+
"type"=>"text/turtle",
+
"title"=>"DOAP RDF Data",
+
"href"=>util_make_url ($php_self));
}
}
diff --git a/src/plugins/forumml/include/forummlPlugin.class.php
b/src/plugins/forumml/include/forummlPlugin.class.php
index bd6070f..b60d1db 100644
--- a/src/plugins/forumml/include/forummlPlugin.class.php
+++ b/src/plugins/forumml/include/forummlPlugin.class.php
@@ -183,7 +183,7 @@ class ForumMLPlugin extends Plugin {
//$request =& HTTPRequest::instance();
if (strpos($_SERVER['REQUEST_URI'], $this->getPluginPath()) ===
0) {
//echo '<link rel="stylesheet" type="text/css"
href="'.$this->getThemePath().'/css/style.css" />'."\n";
- echo '<script type="text/javascript"
src="'.$this->getPluginPath().'/scripts/forumml.js"></script>'."\n";
+
use_javascript($this->getPluginPath().'/scripts/forumml.js');
}
}
diff --git a/src/plugins/hudson/include/hudsonPlugin.class.php
b/src/plugins/hudson/include/hudsonPlugin.class.php
index 69def0e..5d40613 100644
--- a/src/plugins/hudson/include/hudsonPlugin.class.php
+++ b/src/plugins/hudson/include/hudsonPlugin.class.php
@@ -43,7 +43,6 @@ control over it to the project administrator.");
//$this->_addHook("userisactivecheckbox") ; // The "use ..."
checkbox in user account
//$this->_addHook("userisactivecheckboxpost") ; //
$this->_addHook("project_admin_plugins"); // to show up in the
admin page fro group
- $this->_addHook('javascript', false);
$this->_addHook('cssfile', 'cssFile', false);
$this->_addHook('group_delete', 'projectIsDeleted', false);
$this->_addHook('widget_instance', 'myPageBox', false);
diff --git a/src/plugins/scmgit/common/GitPlugin.class.php
b/src/plugins/scmgit/common/GitPlugin.class.php
index e5cece1..878e705 100644
--- a/src/plugins/scmgit/common/GitPlugin.class.php
+++ b/src/plugins/scmgit/common/GitPlugin.class.php
@@ -106,7 +106,7 @@ control over it to the project's administrator.");
foreach ($repo_list as $repo_name) {
if (forge_get_config('use_smarthttp', 'scmgit')) {
$protocol = forge_get_config('use_ssl',
'scmgit')? 'https' : 'http';
- $clone_commands[] = 'git clone
'.$protocol.'://'.$this->getBoxForProject($project).'/anonscm/git/'.$project->getUnixName().'/'.$repo_name.'.git';
+ $clone_commands[] = 'git clone
'.$protocol.'://'.forge_get_config('scm_host').'/anonscm/git/'.$project->getUnixName().'/'.$repo_name.'.git';
}
}
@@ -143,7 +143,7 @@ control over it to the project's administrator.");
$user_id = db_result($result,$i,'user_id');
$user_name = db_result($result,$i,'user_name');
$real_name = db_result($result,$i,'realname');
- $htmlRepo .= html_e('tt', array(), 'git clone
'.$protocol.'://'.$this->getBoxForProject($project).'/anonscm/git/'.$project->getUnixName().'/users/'.$user_name.'.git')
+ $htmlRepo .= html_e('tt', array(), 'git clone
'.$protocol.'://'.forge_get_config('scm_host').'/anonscm/git/'.$project->getUnixName().'/users/'.$user_name.'.git')
. ' ('.util_make_link_u($user_name,
$user_id, $real_name).')'
. html_e('br');
}
@@ -180,7 +180,7 @@ control over it to the project's administrator.");
' '. _('SSH must be installed on your
client machine.'));
$htmlRepo = '';
foreach ($repo_list as $repo_name) {
- $htmlRepo .= html_e('tt',
array(), 'git clone git+ssh://'.$d.'@' . $this->getBoxForProject($project) .
forge_get_config('repos_path', 'scmgit') .'/'. $project->getUnixName() .'/'.
$repo_name .'.git').html_e('br');
+ $htmlRepo .= html_e('tt',
array(), 'git clone git+ssh://'.$d.'@' . forge_get_config('scm_host') .
forge_get_config('repos_path', 'scmgit') .'/'. $project->getUnixName() .'/'.
$repo_name .'.git').html_e('br');
}
$b .= html_e('p', array(), $htmlRepo);
}
@@ -210,7 +210,7 @@ control over it to the project's administrator.");
' '. _('Substitute
<em>developername</em> with the proper value.'));
$htmlRepo = '';
foreach ($repo_list as $repo_name) {
- $htmlRepo .= html_e('tt', array(), 'git
clone git+ssh://'.html_e('i', array(), _('developername'), true, false).'@' .
$this->getBoxForProject($project) . forge_get_config('repos_path', 'scmgit')
.'/'. $project->getUnixName() .'/'. $repo_name .'.git').html_e('br');
+ $htmlRepo .= html_e('tt', array(), 'git
clone git+ssh://'.html_e('i', array(), _('developername'), true, false).'@' .
forge_get_config('scm_host') . forge_get_config('repos_path', 'scmgit') .'/'.
$project->getUnixName() .'/'. $repo_name .'.git').html_e('br');
}
$b .= html_e('p', array(), $htmlRepo);
}
@@ -244,7 +244,7 @@ control over it to the project's administrator.");
$b .= html_e('h3', array(), _('Access
to your personal repository'));
$b .= html_e('p', array(), _('You have
a personal repository for this project, accessible through the following
methods. Enter your site password when prompted.'));
if (forge_get_config('use_ssh',
'scmgit')) {
- $b .= html_e('tt', array(),
'git clone git+ssh://'.$u->getUnixName().'@' .
$this->getBoxForProject($project) . forge_get_config('repos_path', 'scmgit')
.'/'. $project->getUnixName() .'/users/'. $u->getUnixName()
.'.git').html_e('br');
+ $b .= html_e('tt', array(),
'git clone git+ssh://'.$u->getUnixName().'@' . forge_get_config('scm_host') .
forge_get_config('repos_path', 'scmgit') .'/'. $project->getUnixName()
.'/users/'. $u->getUnixName() .'.git').html_e('br');
}
if (forge_get_config('use_smarthttp',
'scmgit')) {
$b .= html_e('tt', array(),
'git clone '.$protocol.'://'.$u->getUnixName().'@' .
forge_get_config('scm_host').'/authscm/'.$u->getUnixName().'/git/'.$project->getUnixName()
.'/users/'. $u->getUnixName() .'.git').html_e('br');
diff --git a/src/plugins/scmgit/common/scmgit_Widget_MyRepositories.class.php
b/src/plugins/scmgit/common/scmgit_Widget_MyRepositories.class.php
index f42caa8..a15c060 100644
--- a/src/plugins/scmgit/common/scmgit_Widget_MyRepositories.class.php
+++ b/src/plugins/scmgit/common/scmgit_Widget_MyRepositories.class.php
@@ -50,7 +50,7 @@ class scmgit_Widget_MyRepositories extends Widget {
foreach ($GitRepositories as $GitRepository) {
$project = group_get_object($GitRepository);
$cells = array();
- $cells[][] = '<tt>git clone
git+ssh://'.$user->getUnixName().'@' .
$scmgitplugin->getBoxForProject($project) .'/'. forge_get_config('scm_root',
'scmgit') .'/'. $project->getUnixName() .'/users/'. $user->getUnixName()
.'.git</tt>';
+ $cells[][] = '<tt>git clone
git+ssh://'.$user->getUnixName().'@' . forge_get_config('scm_host') .'/'.
forge_get_config('scm_root', 'scmgit') .'/'. $project->getUnixName()
.'/users/'. $user->getUnixName() .'.git</tt>';
$cells[][] =
util_make_link('/scm/browser.php?group_id='.$project->getID().'&user_id='.$user->getID(),
_('Browse Git Repository'));
$returnhtml .= $HTML->multiTableRow(array(),
$cells);
}
diff --git a/src/plugins/scmsvn/common/SVNPlugin.class.php
b/src/plugins/scmsvn/common/SVNPlugin.class.php
index b908dc7..84789c2 100644
--- a/src/plugins/scmsvn/common/SVNPlugin.class.php
+++ b/src/plugins/scmsvn/common/SVNPlugin.class.php
@@ -120,7 +120,7 @@ some control over it to the project's administrator.");
$b .= '<p>' ;
$module = $this->topModule($project);
if (forge_get_config('use_ssh', 'scmsvn')) {
- $b .= '<tt>svn checkout
svn://'.$this->getBoxForProject($project).$this->svn_root_fs.'/'.$project->getUnixName().$module.'</tt><br
/>';
+ $b .= '<tt>svn checkout
svn://'.forge_get_config('scm_host').$this->svn_root_fs.'/'.$project->getUnixName().$module.'</tt><br
/>';
}
if (forge_get_config('use_dav', 'scmsvn')) {
$b .= '<p><tt>svn checkout
http'.((forge_get_config('use_ssl', 'scmsvn')) ? 's' : '').'://'.
forge_get_config('scm_host').
'/anonscm/svn/'.$project->getUnixName().$module.'</tt></p>' ;
@@ -148,7 +148,7 @@ some control over it to the project's administrator.");
$b .= ' ';
$b .= _('Enter your site password when
prompted.');
$b .= '</p>';
- $b .= '<p><tt>svn checkout svn+ssh://'.$d.'@' .
$this->getBoxForProject($project) . $this->svn_root_fs .'/'.
$project->getUnixName().$module.'</tt></p>' ;
+ $b .= '<p><tt>svn checkout svn+ssh://'.$d.'@' .
forge_get_config('scm_host') . $this->svn_root_fs .'/'.
$project->getUnixName().$module.'</tt></p>' ;
}
if (forge_get_config('use_dav', 'scmsvn')) {
$b .= '<h2>';
@@ -175,7 +175,7 @@ some control over it to the project's administrator.");
$b .= ' ';
$b .= _('Enter your site password when
prompted.');
$b .= '</p>';
- $b .= '<p><tt>svn checkout
svn+ssh://<i>'._('developername').'</i>@' . $this->getBoxForProject($project) .
$this->svn_root_fs .'/'. $project->getUnixName().$module.'</tt></p>' ;
+ $b .= '<p><tt>svn checkout
svn+ssh://<i>'._('developername').'</i>@' . forge_get_config('scm_host') .
$this->svn_root_fs .'/'. $project->getUnixName().$module.'</tt></p>' ;
}
if (forge_get_config('use_dav', 'scmsvn')) {
$b .= '<h2>';
diff --git a/src/www/include/Layout.class.php b/src/www/include/Layout.class.php
index abd34e5..4a204b8 100644
--- a/src/www/include/Layout.class.php
+++ b/src/www/include/Layout.class.php
@@ -177,7 +177,7 @@ class Layout extends Error {
if (file_exists($filename)) {
$js .= '?'.date ("U", filemtime($filename));
} else {
- $filename = str_replace('/scripts/',
$GLOBALS['fusionforge_basedir'].'/vendor/', $js);
+ $filename = preg_replace(',^/scripts/',
$GLOBALS['fusionforge_basedir'].'/vendor/', $js);
if (file_exists($filename)) {
$js .= '?'.date ("U",
filemtime($filename));
}
@@ -341,23 +341,25 @@ class Layout extends Error {
*/
function headerJS() {
echo html_e('script', array('type' => 'text/javascript', 'src'
=> util_make_uri('/js/common.js')), '', false);
- echo ' <script type="text/javascript">/* <![CDATA[ */';
- plugin_hook ("javascript");
- echo '
- /* ]]> */</script>';
- plugin_hook ("javascript_file");
- echo $this->getJavascripts();
-
// invoke the 'javascript' hook for custom javascript addition
$params = array('return' => false);
plugin_hook("javascript",$params);
$javascript = $params['return'];
if($javascript) {
- echo '<script type="text/javascript">';
+ echo ' <script type="text/javascript">/* <![CDATA[ */';
echo $javascript;
echo '
- </script>';
+ /* ]]> */</script>';
}
+
+ $params = array('return' => array());
+ plugin_hook("javascript_file",$params);
+ $javascript = $params['return'];
+ plugin_hook ("javascript_file");
+ foreach ($params['return'] as $js) {
+ $this->javascripts[] = $js;
+ }
+ echo $this->getJavascripts();
}
/**
@@ -387,7 +389,8 @@ class Layout extends Error {
plugin_hook_by_reference('alt_representations',
$params);
foreach($params['return'] as $link) {
- echo " $link"."\n";
+ printf('<link rel="%s" type="%s" title="%s"
href="%s" />',
+
$link['rel'],$link['type'],$link['title'],$link['href']);
}
}
}
diff --git a/src/www/themes/funky-twig/Theme.class.php
b/src/www/themes/funky-twig/Theme.class.php
index 8752fef..ea8e21e 100644
--- a/src/www/themes/funky-twig/Theme.class.php
+++ b/src/www/themes/funky-twig/Theme.class.php
@@ -169,12 +169,91 @@ class Theme extends Layout {
return $template->render($vars);
}
function header($params) {
- // TODO
- return parent::header($params);
+ $this->headerStart($params);
+ $this->bodyHeader($params);
}
function headerStart($params) {
- // TODO
- return parent::headerStart($params);
+ $this->headerHTMLDeclaration();
+
+ $template = $this->twig->loadTemplate('headerStart.html');
+
+ $vars = array();
+
+ $vars['forge_name'] = forge_get_config('forge_name');
+ if (isset($params['title'])) {
+ $vars['title'] = $params['title'];
+ }
+ if (isset($params['meta-description'])) {
+ $vars['meta_description'] = $params['meta-description'];
+ }
+ if (isset($params['meta-keywords'])) {
+ $vars['meta keywords'] = $params['meta-keywords'];
+ }
+ $vars['favicon_url'] = util_make_uri('/images/icon.png');
+ $vars['search_url'] =
util_make_uri('/export/search_plugin.php');
+
+ $vars['rssfeeds'] = array(
+ array('title' => forge_get_config ('forge_name').' -
Project News Highlights RSS',
+ 'url' =>
util_make_uri('/export/rss_sfnews.php')),
+ array('title' => forge_get_config ('forge_name').' -
Project News Highlights RSS 2.0',
+ 'url' =>
util_make_uri('/export/rss20_news.php')),
+ array('title' => forge_get_config ('forge_name').' -
New Projects RSS',
+ 'url' =>
util_make_uri('/export/rss_sfprojects.php')),
+ );
+ if (isset($GLOBALS['group_id'])) {
+ $vars['rssfeeds'][] = array('title' => forge_get_config
('forge_name') . ' - New Activity RSS',
+
'url' =>
util_make_uri('/export/rss20_activity.php?group_id='.$GLOBALS['group_id']));
+ }
+
+ plugin_hook("javascript_file");
+ plugin_hook("css_file");
+ $vars['javascripts'] = array();
+ foreach ($this->javascripts as $js) {
+ $vars['javascripts'][] = util_make_uri($js);
+ }
+
+ $sheets = array();
+ foreach ($this->stylesheets as $c) {
+ $sheet = array('url' => util_make_uri($c['css']));
+ if ($c['media']) {
+ $sheet['media'] = $c['media'];
+ } else {
+ $sheet['media'] = '';
+ }
+ $sheets[] = $sheet;
+ }
+ $vars['stylesheets'] = $sheets;
+
+ $ff = new FusionForge();
+ $vars['software_name'] = $ff->software_name;
+ $vars['software_version'] = $ff->software_version;
+
+
+
+ $script_name = getStringFromServer('SCRIPT_NAME');
+ $end = strpos($script_name,'/',1);
+ if($end) {
+ $script_name = substr($script_name,0,$end);
+ }
+
+ // Only activated for /projects, /users or /softwaremap for the
moment
+ $vars['alt_representations'] = array();
+ if ($script_name == '/projects' || $script_name == '/users' ||
$script_name == '/softwaremap') {
+
+ $php_self = getStringFromServer('PHP_SELF');
+
+ // invoke the 'alt_representations' hook to add
potential 'alternate' links (useful for Linked Data)
+ // cf. http://www.w3.org/TR/cooluris/#linking
+ $params = array('script_name' => $script_name,
+ 'php_self' => $php_self,
+ 'return' => array());
+
+ plugin_hook_by_reference('alt_representations',
$params);
+
+ $vars['alt_representations'] = $params['return'];
+ }
+
+ print $template->render($vars);
}
function headerHTMLDeclaration() {
global $sysDTDs, $sysXMLNSs;
@@ -192,38 +271,6 @@ class Theme extends Layout {
print $template->render($vars);
}
- function headerTitle($params) {
- // TODO
- return parent::headerTitle($params);
- }
- function headerFavIcon() {
- // TODO
- return parent::headerFavIcon();
- }
- function headerRSS() {
- // TODO
- return parent::headerRSS();
- }
- function headerSearch() {
- // TODO
- return parent::headerSearch();
- }
- function headerCSS() {
- // TODO
- return parent::headerCSS();
- }
- function headerJS() {
- // TODO
- return parent::headerJS();
- }
- function headerLinkedDataAutodiscovery() {
- // TODO
- return parent::headerLinkedDataAutodiscovery();
- }
- function headerForgepluckerMeta() {
- // TODO
- return parent::headerForgepluckerMeta();
- }
function bodyHeader($params){
// TODO
return parent::bodyHeader($params);
diff --git a/src/www/themes/funky-twig/templates/ListTableTop.html
b/src/www/themes/funky-twig/templates/ListTableTop.html
index b534a80..f22b875 100644
--- a/src/www/themes/funky-twig/templates/ListTableTop.html
+++ b/src/www/themes/funky-twig/templates/ListTableTop.html
@@ -1,5 +1,5 @@
<table class="listing {% if class %}{{ class }}{% else %}full{% endif %}"
id="{{id}}">
- {% if data|count %}
+ {% if data|length %}
<thead>
<tr>
{% for item in data %}
diff --git a/src/www/themes/funky-twig/templates/headerStart.html
b/src/www/themes/funky-twig/templates/headerStart.html
new file mode 100644
index 0000000..58b3f37
--- /dev/null
+++ b/src/www/themes/funky-twig/templates/headerStart.html
@@ -0,0 +1,38 @@
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ {% if meta_description %}
+ <meta name="description" content="{{ meta_description }}" />
+ {% endif %}
+ {% if meta_keywords %}
+ <meta name="keywords" content="{{ meta_keywords }}" />
+ {% endif %}
+ {% if title %}
+ <title>{{ forge_name }}: {{ title }}</title>
+ {% else %}
+ <title>{{ forge_name }}</title>
+ {% endif %}
+ <link rel="icon" type="image/png" href="{{ favicon_url }}" />
+ <link rel="shortcut icon" type="image/png" href="{{ favicon_url }}" />
+
+ {% for f in rssfeeds %}
+ <link rel="alternate" title="{{ f.title }}" href="{{ f.url }}"
type="application/rss+xml" />
+ {% endfor %}
+
+ <link rel="search" title="{{ forge_name }}" href="{{ search_url }}"
type="application/opensearchdescription+xml" />
+
+ {% for s in javascripts %}
+ <script type="text/javascript" src="{{ s }}"></script>
+ {% endfor %}
+
+ {% for s in stylesheets %}
+ <link type="text/css" href="{{ s.url }}" {% if m %} media="{{ s.media }}"
{% endif %} />
+ {% endfor %}
+
+ <meta name="Forge-Identification" content="{{ software_name }}:{{
software_version }}" />
+
+ {% for a in alt_representations %}
+ <link type="{{ a.type }}" href="{{ a.href }}" rel="{{ a.rel }}" title="{{
a.title }}" />
+ {% endfor %}
+
+ </head>
+ <body>
diff --git a/src/www/themes/funky-wOw/Theme.class.php
b/src/www/themes/funky-wOw/Theme.class.php
index d4618e4..786d938 100644
--- a/src/www/themes/funky-wOw/Theme.class.php
+++ b/src/www/themes/funky-wOw/Theme.class.php
@@ -374,6 +374,8 @@ class Theme extends Layout {
echo "\n".'//]]'."\n";
echo html_ac(html_ap() -1);
}
+ // invoke the 'javascript_file' hook for custom javascript
addition
+ plugin_hook("javascript_file",$params);
html_use_storage();
html_use_coolfieldset();
html_use_jqueryui();
diff --git a/src/www/themes/funky/Theme.class.php
b/src/www/themes/funky/Theme.class.php
index e86fd77..86460d1 100644
--- a/src/www/themes/funky/Theme.class.php
+++ b/src/www/themes/funky/Theme.class.php
@@ -373,6 +373,15 @@ class Theme extends Layout {
echo "\n".'//]]'."\n";
echo html_ac(html_ap() -1);
}
+
+ // invoke the 'javascript_file' hook for custom javascript
addition
+ $params = array('return' => array());
+ plugin_hook("javascript_file",$params);
+ $javascript = $params['return'];
+ plugin_hook ("javascript_file");
+ foreach ($params['return'] as $js) {
+ $this->javascripts[] = $js;
+ }
html_use_storage();
html_use_coolfieldset();
html_use_jqueryui();
diff --git a/tests/buildbot/push-packages-to-repositories.sh
b/tests/buildbot/push-packages-to-repositories.sh
index 8a1d3ae..8d471ac 100755
--- a/tests/buildbot/push-packages-to-repositories.sh
+++ b/tests/buildbot/push-packages-to-repositories.sh
@@ -41,7 +41,7 @@ case $method in
rsync -av --delete-after --exclude=/mini-dinstall --exclude=/*.db
--delete-excluded /var/lib/jenkins/deb/
[email protected]:/home/groups/fusionforge/htdocs/deb/
;;
rpm)
- rpmsign --addsign $WORKSPACE/packages/noarch/*.rpm
+ rpmsign --addsign $WORKSPACE/packages/*/*.rpm
gpg --detach-sign --armor $WORKSPACE/packages/repodata/repomd.xml
rsync -av --delete $WORKSPACE/packages/
/var/lib/jenkins/rpm/$dist-$branch/
rsync -av --delete-after /var/lib/jenkins/rpm/
[email protected]:/home/groups/fusionforge/htdocs/rpm/
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits