Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
emulab
emulab-stable
Commits
4559fe46
Commit
4559fe46
authored
Dec 05, 2014
by
Leigh B Stoller
Browse files
Add a flag to push a profile to the top of the list.
parent
d96333e3
Changes
10
Hide whitespace changes
Inline
Side-by-side
apt/APT_Profile.pm.in
View file @
4559fe46
...
...
@@ -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
};
}
...
...
apt/manage_profile.in
View file @
4559fe46
...
...
@@ -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
],
);
...
...
sql/database-create.sql
View file @
4559fe46
...
...
@@ -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`
),
...
...
sql/database-fill.sql
View file @
4559fe46
...
...
@@ -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
);
...
...
sql/updates/4/417
0 → 100644
View file @
4559fe46
#
# 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:
www/aptui/instantiate.php
View file @
4559fe46
...
...
@@ -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
&&
...
...
www/aptui/js/manage_profile.js
View file @
4559fe46
...
...
@@ -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
...
...
www/aptui/manage_profile.php
View file @
4559fe46
...
...
@@ -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
;
...
...
www/aptui/profile_defs.php
View file @
4559fe46
...
...
@@ -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'
);
}
...
...
www/aptui/template/manage-profile.html
View file @
4559fe46
...
...
@@ -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]"
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment