All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 4559fe46 authored by Leigh B Stoller's avatar Leigh B Stoller

Add a flag to push a profile to the top of the list.

parent d96333e3
......@@ -336,6 +336,8 @@ sub Create($$$$$$)
if (exists($argref->{'listed'}) && $argref->{'listed'});
$cquery .= ",shared=1"
if (exists($argref->{'shared'}) && $argref->{'shared'});
$cquery .= ",topdog=1"
if (exists($argref->{'topdog'}) && $argref->{'topdog'});
# Create the main entry:
if (! DBQueryWarn("insert into apt_profiles set $cquery")) {
......@@ -465,7 +467,7 @@ sub UpdateMetaData($$)
# This is the only metadata we can update.
#
my %mods = ();
foreach my $key ("listed", "shared", "public") {
foreach my $key ("listed", "shared", "public", "topdog") {
if (exists($argref->{$key})) {
$mods{$key} = $argref->{$key};
}
......
......@@ -159,6 +159,8 @@ my %xmlfields =
"profile_listed" => ["listed", $SLOT_OPTIONAL|$SLOT_UPDATE],
"profile_public" => ["public", $SLOT_OPTIONAL|$SLOT_UPDATE],
"profile_shared" => ["shared", $SLOT_OPTIONAL|$SLOT_UPDATE],
"profile_topdog" => ["topdog", $SLOT_OPTIONAL|
$SLOT_UPDATE|$SLOT_ADMINONLY],
"rspec" => ["rspec", $SLOT_REQUIRED|$SLOT_UPDATE],
"script" => ["script", $SLOT_OPTIONAL|$SLOT_UPDATE],
);
......
......@@ -170,6 +170,7 @@ CREATE TABLE `apt_profiles` (
`public` tinyint(1) NOT NULL default '0',
`shared` tinyint(1) NOT NULL default '0',
`listed` tinyint(1) NOT NULL default '0',
`topdog` tinyint(1) NOT NULL default '0',
`locked` datetime default NULL,
`locker_pid` int(11) default '0',
PRIMARY KEY (`profileid`),
......
......@@ -1284,6 +1284,7 @@ REPLACE INTO table_regex VALUES ('apt_profiles','name','text','redirect','images
REPLACE INTO table_regex VALUES ('apt_profiles','public','int','redirect','default:boolean',0,0,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','listed','int','redirect','default:boolean',0,0,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','shared','int','redirect','default:boolean',0,0,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','topdog','int','redirect','default:boolean',0,0,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','description','text','redirect','default:html_fulltext',0,512,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','rspec','text','redirect','default:html_fulltext',0,65535,NULL);
REPLACE INTO table_regex VALUES ('apt_profiles','script','text','redirect','default:html_fulltext',0,65535,NULL);
......
#
# Modify APT profiles table.
#
use strict;
use libdb;
sub DoUpdate($$$)
{
my ($dbhandle, $dbname, $version) = @_;
if (!DBSlotExists("apt_profiles", "topdog")) {
DBQueryFatal("alter table apt_profiles add ".
" `topdog` tinyint(1) NOT NULL default '0' ".
" after listed");
}
DBQueryFatal("REPLACE INTO table_regex VALUES ".
"('apt_profiles','topdog','int','redirect',".
"'default:boolean',0,0,NULL)");
}
1;
# Local Variables:
# mode:perl
# End:
......@@ -182,7 +182,8 @@ else {
" v.profileid=p.profileid and ".
" v.version=p.version ".
"$joinclause ".
"where locked is null and ($whereclause)");
"where locked is null and ($whereclause) ".
"order by p.topdog desc");
while ($row = mysql_fetch_array($query_result)) {
$profile_array[$row["uuid"]] = $row["name"];
if ($row["pid"] == $profile_default_pid &&
......
......@@ -86,6 +86,7 @@ function (_, sup, filesize, JacksEditor, ShowImagingModal, moment,
candelete: window.CANDELETE,
canmodify: window.CANMODIFY,
canpublish: window.CANPUBLISH,
isadmin: window.ISADMIN,
history: window.HISTORY,
activity: window.ACTIVITY,
snapuuid: (window.SNAPUUID || null),
......@@ -270,6 +271,7 @@ function (_, sup, filesize, JacksEditor, ShowImagingModal, moment,
$('#profile_who_public').change(function() { ProfileModified(); });
$('#profile_who_registered').change(function() { ProfileModified(); });
$('#profile_who_private').change(function() { ProfileModified(); });
$('#profile_topdog').change(function() { ProfileModified(); });
/*
* A double click handler that will render the instructions
......
......@@ -64,6 +64,7 @@ function SPITFORM($formfields, $errors)
$canpublish = 0;
$history = 0;
$activity = 0;
$isadmin = (ISADMIN() ? 1 : 0);
$version_uuid = "null";
$profile_uuid = "null";
......@@ -153,6 +154,7 @@ function SPITFORM($formfields, $errors)
echo " window.CANDELETE= $candelete;\n";
echo " window.CANMODIFY= $canmodify;\n";
echo " window.CANPUBLISH= $canpublish;\n";
echo " window.ISADMIN = $isadmin;\n";
echo " window.HISTORY = $history;\n";
echo " window.ACTIVITY = $activity;\n";
echo " window.TITLE = '$title';\n";
......@@ -272,6 +274,8 @@ if (! isset($create)) {
$defaults["profile_who"] =
($profile->shared() ? "shared" :
($profile->ispublic() ? "public" : "private"));
$defaults["profile_topdog"] =
($profile->topdog() ? "checked" : "");
# Warm fuzzy message.
if (isset($_SESSION["notifyupdate"])) {
......@@ -464,6 +468,17 @@ else {
($who == "shared" ? 1 : 0) . "</value></attribute>\n");
fwrite($fp, "<attribute name='profile_public'><value>" .
($who == "public" ? 1 : 0) . "</value></attribute>\n");
if (ISADMIN()) {
fwrite($fp, "<attribute name='profile_topdog'><value>");
if (isset($formfields["profile_topdog"]) &&
$formfields["profile_topdog"] == "checked") {
fwrite($fp, "1");
}
else {
fwrite($fp, "0");
}
fwrite($fp, "</value></attribute>\n");
}
fwrite($fp, "</profile>\n");
fclose($fp);
chmod($xmlname, 0666);
......@@ -511,7 +526,7 @@ if ($retval) {
}
}
}
unlink($xmlname);
#unlink($xmlname);
if (count($errors)) {
SPITFORM($formfields, $errors);
return;
......
......@@ -109,6 +109,7 @@ class Profile
function script() { return $this->field('script'); }
function locked() { return $this->field('status'); }
function status() { return $this->field('locked'); }
function topdog() { return $this->field('topdog'); }
function parent_profileid() { return $this->field('parent_profileid'); }
function parent_version() { return $this->field('parent_version'); }
......
......@@ -327,6 +327,24 @@
</div>
</div>
<% if (isadmin) { %>
<div class='row'>
<div class='col-sm-10 col-sm-offset-2'>
<div class='checkbox format-me' data-key='profile_topdog'
data-compact='yep'>
<label>
<input name=formfields[profile_topdog]
<%- formfields.profile_topdog %>
data-key='profile_topdog'
id='profile_topdog' value='checked'
type='checkbox'>Put this profile at the top of
the list.
</label>
</div>
</div>
</div>
<% } %>
<!-- The private URL -->
<% if (0) { %>
<input name="formfields[profile_version_url]"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment