Add an option to configure an external URL per project, e.g. to allow the
linking of the home page of the project. This feature was kindly sponsored by Scilab.
This commit is contained in:
parent
4ae0019e0f
commit
7f610fd2f3
284
logo/external_link.svg
Normal file
284
logo/external_link.svg
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="190.51302"
|
||||||
|
height="182.16527"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.47 r22583"
|
||||||
|
sodipodi:docname="external_link.svg"
|
||||||
|
inkscape:export-filename="/Users/tommyd/Entwicklung/Open Source/indefero/www/media/idf/img/external_link.png"
|
||||||
|
inkscape:export-xdpi="7.4108529"
|
||||||
|
inkscape:export-ydpi="7.4108529"
|
||||||
|
enable-background="new">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect4079"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect4071"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3627"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3619"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3615"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3611"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3607"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3603"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3599"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="skeletal"
|
||||||
|
id="path-effect3595"
|
||||||
|
is_visible="true"
|
||||||
|
pattern="M 0,5 10,10 10,0 z"
|
||||||
|
copytype="single_stretched"
|
||||||
|
prop_scale="1"
|
||||||
|
scale_y_rel="false"
|
||||||
|
spacing="0"
|
||||||
|
normal_offset="0"
|
||||||
|
tang_offset="0"
|
||||||
|
prop_units="false"
|
||||||
|
vertical_pattern="false"
|
||||||
|
fuse_tolerance="0" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4900"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter4921"
|
||||||
|
x="-0.12982728"
|
||||||
|
width="1.2596545"
|
||||||
|
y="-0.092135489"
|
||||||
|
height="1.184271"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.8004762"
|
||||||
|
id="feGaussianBlur4923" />
|
||||||
|
</filter>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4933"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<filter
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter4921-3"
|
||||||
|
x="-0.12982728"
|
||||||
|
width="1.2596545"
|
||||||
|
y="-0.092135489"
|
||||||
|
height="1.184271">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.8004762"
|
||||||
|
id="feGaussianBlur4923-8" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.78"
|
||||||
|
inkscape:cx="138.94497"
|
||||||
|
inkscape:cy="111.09667"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1389"
|
||||||
|
inkscape:window-height="803"
|
||||||
|
inkscape:window-x="47"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Ebene"
|
||||||
|
transform="translate(16.297732,13.906157)"
|
||||||
|
style="display:inline"
|
||||||
|
sodipodi:insensitive="true">
|
||||||
|
<g
|
||||||
|
id="g2818-7"
|
||||||
|
style="fill:#e6e6e6;fill-opacity:1;stroke:#a0a0a0;stroke-width:2.26057386;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter4921-3)"
|
||||||
|
transform="matrix(0.97722285,0,0,-0.85847241,-166.837,487.59193)">
|
||||||
|
<rect
|
||||||
|
ry="9.2957697"
|
||||||
|
rx="8.07693"
|
||||||
|
y="389.50504"
|
||||||
|
x="171.42857"
|
||||||
|
height="177.14285"
|
||||||
|
width="125.71429"
|
||||||
|
id="rect2816-9"
|
||||||
|
style="opacity:0.79710143;fill:#000000;fill-opacity:1;stroke:#a0a0a0;stroke-width:2.26057386;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-155.26623,-395.13431)"
|
||||||
|
style="display:inline;">
|
||||||
|
<rect
|
||||||
|
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#a0a0a0;stroke-width:2.41343927;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect4985"
|
||||||
|
width="129.92365"
|
||||||
|
height="152.95734"
|
||||||
|
x="168.88869"
|
||||||
|
y="407.28156"
|
||||||
|
rx="9.9356585"
|
||||||
|
ry="11.003931" />
|
||||||
|
<path
|
||||||
|
style="fill:#00000f;fill-opacity:0.94117647;stroke:none;stroke-width:2.17028474999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 205.32036,460.1042 67.83031,0 0,-32.45771 71.54343,60.58773 -72.50161,61.39918 0,-33.26916 -66.75258,0 0,-56.26004"
|
||||||
|
id="path4081"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.6 KiB |
@ -72,6 +72,13 @@ class IDF_Form_Admin_ProjectCreate extends Pluf_Form
|
|||||||
'widget_attrs' => array('size' => '35'),
|
'widget_attrs' => array('size' => '35'),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->fields['external_project_url'] = new Pluf_Form_Field_Varchar(
|
||||||
|
array('required' => false,
|
||||||
|
'label' => __('External URL'),
|
||||||
|
'widget_attrs' => array('size' => '35'),
|
||||||
|
'initial' => '',
|
||||||
|
));
|
||||||
|
|
||||||
$this->fields['scm'] = new Pluf_Form_Field_Varchar(
|
$this->fields['scm'] = new Pluf_Form_Field_Varchar(
|
||||||
array('required' => true,
|
array('required' => true,
|
||||||
'label' => __('Repository type'),
|
'label' => __('Repository type'),
|
||||||
@ -235,6 +242,11 @@ class IDF_Form_Admin_ProjectCreate extends Pluf_Form
|
|||||||
return $shortname;
|
return $shortname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function clean_external_project_url()
|
||||||
|
{
|
||||||
|
return IDF_Form_ProjectConf::checkWebURL($this->cleaned_data['external_project_url']);
|
||||||
|
}
|
||||||
|
|
||||||
public function clean()
|
public function clean()
|
||||||
{
|
{
|
||||||
if ($this->cleaned_data['scm'] != 'svn') {
|
if ($this->cleaned_data['scm'] != 'svn') {
|
||||||
@ -298,7 +310,7 @@ class IDF_Form_Admin_ProjectCreate extends Pluf_Form
|
|||||||
$conf = new IDF_Conf();
|
$conf = new IDF_Conf();
|
||||||
$conf->setProject($project);
|
$conf->setProject($project);
|
||||||
$keys = array('scm', 'svn_remote_url', 'svn_username',
|
$keys = array('scm', 'svn_remote_url', 'svn_username',
|
||||||
'svn_password', 'mtn_master_branch');
|
'svn_password', 'mtn_master_branch', 'external_project_url');
|
||||||
foreach ($keys as $key) {
|
foreach ($keys as $key) {
|
||||||
$this->cleaned_data[$key] = (!empty($this->cleaned_data[$key])) ?
|
$this->cleaned_data[$key] = (!empty($this->cleaned_data[$key])) ?
|
||||||
$this->cleaned_data[$key] : '';
|
$this->cleaned_data[$key] : '';
|
||||||
|
@ -53,6 +53,13 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
'widget_attrs' => array('size' => '35'),
|
'widget_attrs' => array('size' => '35'),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->fields['external_project_url'] = new Pluf_Form_Field_Varchar(
|
||||||
|
array('required' => false,
|
||||||
|
'label' => __('External URL'),
|
||||||
|
'widget_attrs' => array('size' => '35'),
|
||||||
|
'initial' => $conf->getVal('external_project_url'),
|
||||||
|
));
|
||||||
|
|
||||||
if ($this->project->getConf()->getVal('scm') == 'mtn') {
|
if ($this->project->getConf()->getVal('scm') == 'mtn') {
|
||||||
$this->fields['mtn_master_branch'] = new Pluf_Form_Field_Varchar(
|
$this->fields['mtn_master_branch'] = new Pluf_Form_Field_Varchar(
|
||||||
array('required' => false,
|
array('required' => false,
|
||||||
@ -115,6 +122,11 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['members']);
|
return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['members']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function clean_external_project_url()
|
||||||
|
{
|
||||||
|
return IDF_Form_ProjectConf::checkWebURL($this->cleaned_data['external_project_url']);
|
||||||
|
}
|
||||||
|
|
||||||
public function save($commit=true)
|
public function save($commit=true)
|
||||||
{
|
{
|
||||||
if (!$this->isValid()) {
|
if (!$this->isValid()) {
|
||||||
@ -127,10 +139,16 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
||||||
$this->project->update();
|
$this->project->update();
|
||||||
|
|
||||||
$keys = array('mtn_master_branch');
|
$conf = $this->project->getConf();
|
||||||
|
$keys = array('mtn_master_branch', 'external_project_url');
|
||||||
foreach ($keys as $key) {
|
foreach ($keys as $key) {
|
||||||
if (!empty($this->cleaned_data[$key])) {
|
if (array_key_exists($key, $this->cleaned_data)) {
|
||||||
$this->project->getConf()->setVal($key, $this->cleaned_data[$key]);
|
if (!empty($this->cleaned_data[$key])) {
|
||||||
|
$conf->setVal($key, $this->cleaned_data[$key]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$conf->delVal($key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ class IDF_Form_ProjectConf extends Pluf_Form
|
|||||||
public function initFields($extra=array())
|
public function initFields($extra=array())
|
||||||
{
|
{
|
||||||
$this->project = $extra['project'];
|
$this->project = $extra['project'];
|
||||||
|
$conf = $this->project->getConf();
|
||||||
|
|
||||||
// Basic part
|
// Basic part
|
||||||
$this->fields['name'] = new Pluf_Form_Field_Varchar(array('required' => true,
|
$this->fields['name'] = new Pluf_Form_Field_Varchar(array('required' => true,
|
||||||
@ -51,6 +52,11 @@ class IDF_Form_ProjectConf extends Pluf_Form
|
|||||||
),
|
),
|
||||||
'widget' => 'Pluf_Form_Widget_TextareaInput',
|
'widget' => 'Pluf_Form_Widget_TextareaInput',
|
||||||
));
|
));
|
||||||
|
$this->fields['external_project_url'] = new Pluf_Form_Field_Varchar(array('required' => false,
|
||||||
|
'label' => __('External URL'),
|
||||||
|
'widget_attrs' => array('size' => '68'),
|
||||||
|
'initial' => $conf->getVal('external_project_url'),
|
||||||
|
));
|
||||||
|
|
||||||
// Logo part
|
// Logo part
|
||||||
$upload_path = Pluf::f('upload_path', false);
|
$upload_path = Pluf::f('upload_path', false);
|
||||||
@ -118,20 +124,48 @@ class IDF_Form_ProjectConf extends Pluf_Form
|
|||||||
return $this->cleaned_data['logo'];
|
return $this->cleaned_data['logo'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function clean_external_project_url()
|
||||||
|
{
|
||||||
|
return self::checkWebURL($this->cleaned_data['external_project_url']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function checkWebURL($url)
|
||||||
|
{
|
||||||
|
$url = trim($url);
|
||||||
|
if (empty($url)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$parsed = parse_url($url);
|
||||||
|
if ($parsed === false || !array_key_exists('scheme', $parsed) ||
|
||||||
|
($parsed['scheme'] != 'http' && $parsed['scheme'] != 'https')) {
|
||||||
|
throw new Pluf_Form_Invalid(__('The entered URL is invalid. Only http and https URLs are allowed.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
public function save($commit=true)
|
public function save($commit=true)
|
||||||
{
|
{
|
||||||
$conf = $this->project->getConf();
|
|
||||||
|
|
||||||
// Basic part
|
// Basic part
|
||||||
$this->project->name = $this->cleaned_data['name'];
|
$this->project->name = $this->cleaned_data['name'];
|
||||||
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
||||||
$this->project->description = $this->cleaned_data['description'];
|
$this->project->description = $this->cleaned_data['description'];
|
||||||
$this->project->update();
|
$this->project->update();
|
||||||
|
|
||||||
// Logo part
|
$conf = $this->project->getConf();
|
||||||
if ($this->cleaned_data['logo'] !== "") {
|
$keys = array('logo', 'external_project_url');
|
||||||
$conf->setVal('logo', $this->cleaned_data['logo']);
|
foreach ($keys as $key) {
|
||||||
|
if (array_key_exists($key, $this->cleaned_data)) {
|
||||||
|
if (!empty($this->cleaned_data[$key])) {
|
||||||
|
$conf->setVal($key, $this->cleaned_data[$key]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$conf->delVal($key);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->cleaned_data['logo_remove'] === true) {
|
if ($this->cleaned_data['logo_remove'] === true) {
|
||||||
@unlink(Pluf::f('upload_path') . '/' . $this->project->shortname . $conf->getVal('logo'));
|
@unlink(Pluf::f('upload_path') . '/' . $this->project->shortname . $conf->getVal('logo'));
|
||||||
$conf->delVal('logo');
|
$conf->delVal('logo');
|
||||||
|
@ -552,6 +552,22 @@ GROUP BY uid";
|
|||||||
return $this->_pconf;
|
return $this->_pconf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic overload that falls back to the values of the internal configuration
|
||||||
|
* if no getter / caller matched
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
*/
|
||||||
|
public function __get($key)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return parent::__get($key);
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
return $this->getConf()->getVal($key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get simple statistics about the project.
|
* Get simple statistics about the project.
|
||||||
*
|
*
|
||||||
|
@ -40,7 +40,7 @@ class IDF_Views
|
|||||||
public function index($request, $match, $api=false)
|
public function index($request, $match, $api=false)
|
||||||
{
|
{
|
||||||
$projects = self::getProjects($request->user);
|
$projects = self::getProjects($request->user);
|
||||||
$stats = self::getProjectsStatistics ($projects);
|
$stats = self::getProjectsStatistics($projects);
|
||||||
|
|
||||||
if ($api == true) return $projects;
|
if ($api == true) return $projects;
|
||||||
return Pluf_Shortcuts_RenderToResponse('idf/index.html',
|
return Pluf_Shortcuts_RenderToResponse('idf/index.html',
|
||||||
|
@ -305,7 +305,7 @@ class IDF_Views_Project
|
|||||||
return new Pluf_HTTP_Response_Redirect($url);
|
return new Pluf_HTTP_Response_Redirect($url);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$form = new IDF_Form_ProjectConf($prj->getData(), $extra);
|
$form = new IDF_Form_ProjectConf(null, $extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
$logo = $prj->getConf()->getVal('logo');
|
$logo = $prj->getConf()->getVal('logo');
|
||||||
|
@ -25,6 +25,12 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th><strong>{$form.f.external_project_url.labelTag}:</strong></th>
|
||||||
|
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||||
|
{$form.f.external_project_url|unsafe}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<th><strong>{$form.f.description.labelTag}:</strong></th>
|
<th><strong>{$form.f.description.labelTag}:</strong></th>
|
||||||
<td>{if $form.f.description.errors}{$form.f.description.fieldErrors}{/if}
|
<td>{if $form.f.description.errors}{$form.f.description.fieldErrors}{/if}
|
||||||
{$form.f.description|unsafe}
|
{$form.f.description|unsafe}
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}">
|
<div id="{block docid}doc3{/block}">
|
||||||
<div id="hd">
|
<div id="hd">
|
||||||
{if $project}<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}</h1>{/if}
|
{if $project}<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}{assign $url = $project.external_project_url}{if $url != ''}<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>{/if}</h1>{/if}
|
||||||
{include 'idf/main-menu.html'}
|
{include 'idf/main-menu.html'}
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<div id="main-tabs">
|
<div id="main-tabs">
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||||
<div id="hd">
|
<div id="hd">
|
||||||
{if $project}<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}</h1>{/if}
|
{if $project}<h1 class="project-title">{$project}<img class="logo" src="{url 'IDF_Views_Project::logo', array($project.shortname)}" alt="{trans 'Project logo'}" />{if $project.private}<img class="lock" src="{media '/idf/img/lock.png'}" alt="{trans 'Private project'}" />{/if}{$p}{assign $url = $project.external_project_url}{if $url != ''}<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>{/if}</h1>{/if}
|
||||||
{include 'idf/main-menu.html'}
|
{include 'idf/main-menu.html'}
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<div id="main-tabs">
|
<div id="main-tabs">
|
||||||
|
@ -37,6 +37,12 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th><strong>{$form.f.external_project_url.labelTag}:</strong></th>
|
||||||
|
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||||
|
{$form.f.external_project_url|unsafe}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<th><strong>{$form.f.scm.labelTag}:</strong></th>
|
<th><strong>{$form.f.scm.labelTag}:</strong></th>
|
||||||
<td>{if $form.f.scm.errors}{$form.f.scm.fieldErrors}{/if}
|
<td>{if $form.f.scm.errors}{$form.f.scm.fieldErrors}{/if}
|
||||||
{$form.f.scm|unsafe}
|
{$form.f.scm|unsafe}
|
||||||
|
@ -25,6 +25,12 @@
|
|||||||
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><strong>{$form.f.external_project_url.labelTag}:</strong></th>
|
||||||
|
<td>{if $form.f.external_project_url.errors}{$form.f.external_project_url.fieldErrors}{/if}
|
||||||
|
{$form.f.external_project_url|unsafe}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
{if $project.getConf().getVal('scm') == 'mtn'}
|
{if $project.getConf().getVal('scm') == 'mtn'}
|
||||||
<tr class="mtn-form">
|
<tr class="mtn-form">
|
||||||
<th><strong>{$form.f.mtn_master_branch.labelTag}:</strong></th>
|
<th><strong>{$form.f.mtn_master_branch.labelTag}:</strong></th>
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
<div class="p-list-prj">
|
<div class="p-list-prj">
|
||||||
<p>
|
<p>
|
||||||
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}"><strong>{$p}</strong></a>
|
<a href="{url 'IDF_Views_Project::home', array($p.shortname)}"><strong>{$p}</strong></a>
|
||||||
|
{assign $url = $p.external_project_url}
|
||||||
|
{if $url != ''}
|
||||||
|
<a href="{$url}" target="_blank" class="external-link" title="{trans 'External link to project'}" /> </a>
|
||||||
|
{/if}
|
||||||
{if $p.private} - {trans 'Private project'}{/if}
|
{if $p.private} - {trans 'Private project'}{/if}
|
||||||
</p>
|
</p>
|
||||||
<p>{$p.shortdesc}</p>
|
<p>{$p.shortdesc}</p>
|
||||||
|
@ -1105,6 +1105,12 @@ div.p-list-private {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.external-link {
|
||||||
|
background: url(../img/external_link.png) no-repeat right center;
|
||||||
|
padding-right: 15px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Issue summary
|
* Issue summary
|
||||||
*/
|
*/
|
||||||
|
BIN
www/media/idf/img/external_link.png
Normal file
BIN
www/media/idf/img/external_link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 509 B |
Loading…
Reference in New Issue
Block a user