Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
lemonldap-ng
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
258
Issues
258
List
Boards
Labels
Service Desk
Milestones
Merge Requests
5
Merge Requests
5
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LemonLDAP NG
lemonldap-ng
Commits
1be53614
Commit
1be53614
authored
May 20, 2016
by
Yadd
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace portal js by coffee (
#595
)
parent
a65e1f6f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
147 additions
and
206 deletions
+147
-206
Makefile
Makefile
+10
-6
lemonldap-ng-portal/site/coffee/portal.coffee
lemonldap-ng-portal/site/coffee/portal.coffee
+2
-0
lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
+134
-199
lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js
...ldap-ng-portal/site/htdocs/static/common/js/portal.min.js
+1
-1
No files found.
Makefile
View file @
1be53614
...
...
@@ -186,13 +186,17 @@ MANAGERJSONDST=$(SRCMANAGERDIR)/site/static/struct.json \
_example/conf/lmConf-1.js
# Javascript and CSS to minify
JSSRCFILES
:=
$(
shell
find
*
/site/static/js
$(SRCPORTALDIR)
/
example
-type
f
-name
'*.js'
!
-name
'*.min.js'
)
\
JSSRCFILES
:=
$(
shell
find
*
/site/static/js
$(SRCPORTALDIR)
/
site/htdocs/static/common/js
-type
f
-name
'*.js'
!
-name
'*.min.js'
)
\
$(SRCMANAGERDIR)
/site/static/bwr/file-saver.js/FileSaver.js
CSSSRCFILES
:=
$(
shell
find
*
/site/static/css
$(SRCPORTALDIR)
/
example
-type
f
-name
'*.css'
!
-name
'*.min.css'
)
CSSSRCFILES
:=
$(
shell
find
*
/site/static/css
$(SRCPORTALDIR)
/
site/htdocs/static/common/css
-type
f
-name
'*.css'
!
-name
'*.min.css'
)
# Coffee files
COFFEESRCFILES
:=
$(
shell
find
*
/site/coffee/
-type
f
-name
'*.coffee'
)
COFFEEDSTFILES
:=
$(
subst
coffee/,static/js/,
$(COFFEESRCFILES:.coffee=.js)
)
MANAGERCOFFEESRCFILES
:=
$(
shell
find lemonldap-ng-manager/site/coffee
-type
f
-name
'*.coffee'
)
PORTALCOFFEESRCFILES
:=
$(
shell
find lemonldap-ng-portal/site/coffee
-type
f
-name
'*.coffee'
)
COFFEESRCFILES
=
$(MANAGERCOFFEESRCFILES)
$(PORTALCOFFEESRCFILES)
MANAGERCOFFEEDSTFILES
:=
$(
subst
coffee/,static/js/,
$(MANAGERCOFFEESRCFILES:.coffee=.js)
)
PORTALCOFFEEDSTFILES
:=
$(
subst
coffee/,htdocs/static/common/js/,
$(PORTALCOFFEESRCFILES:.coffee=.js)
)
COFFEEDSTFILES
:=
$(MANAGERCOFFEEDSTFILES)
$(PORTALCOFFEEDSTFILES)
# Minified files
JSDSTFILES
=
$(JSSRCFILES:.js=.min.js)
...
...
@@ -264,10 +268,10 @@ js: $(COFFEEDSTFILES)
minify
:
js $(JSDSTFILES) $(CSSDSTFILES)
$(SRCPORTALDIR)/site/
static
/js/%.js
:
$(SRCPORTALDIR)/site/coffee/%.coffee
$(SRCPORTALDIR)/site/
htdocs/static/common
/js/%.js
:
$(SRCPORTALDIR)/site/coffee/%.coffee
@
if
which coffee
>
/dev/null
;
then
\
echo
"Compiling
$(SRCPORTALDIR)
/site/coffee/
$*
.coffee"
;
\
coffee
-c
-o
$(SRCPORTALDIR)
/site/
static
/js/
$(SRCPORTALDIR)
/site/coffee/
$*
.coffee
;
\
coffee
-c
-o
$(SRCPORTALDIR)
/site/
htdocs/static/common
/js/
$(SRCPORTALDIR)
/site/coffee/
$*
.coffee
;
\
fi
$(SRCMANAGERDIR)/site/static/js/%.js
:
$(SRCMANAGERDIR)/site/coffee/%.coffee
...
...
lemonldap-ng-portal/site/coffee/portal.coffee
View file @
1be53614
...
...
@@ -97,6 +97,8 @@ ping = ->
else
location
.
reload
true
window
.
ping
=
ping
# Initialization
$
(
document
).
ready
->
if
antiframe
and
top
!=
self
...
...
lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
View file @
1be53614
/**
* LemonLDAP::NG Portal jQuery scripts
*/
/* Used variables
* - displaytab
* - choicetab
* - login
* - newwindow
* - antiframe
*/
/* Set newwindow value (default is false) */
if
(
newwindow
.
match
(
'
1
'
))
{
newwindow
=
true
;
}
else
{
newwindow
=
false
;
}
/* Set antiframe value (default is true) */
if
(
antiframe
.
match
(
'
0
'
))
{
antiframe
=
false
;
}
else
{
antiframe
=
true
;
}
/* Set activeTimer value (default is true) */
if
(
activeTimer
.
match
(
'
0
'
))
{
activeTimer
=
false
;
}
else
{
activeTimer
=
true
;
}
/* jQuery */
$
(
document
).
ready
(
function
()
{
/* AntiFrame script */
if
(
antiframe
&&
top
!=
self
)
{
top
.
location
.
href
=
location
.
href
;
}
/* Sortable menu */
$
(
"
#appslist
"
).
sortable
({
axis
:
"
y
"
,
cursor
:
"
move
"
,
opacity
:
0.5
,
revert
:
true
,
items
:
"
> div.category
"
,
update
:
function
()
{
getOrder
();
}
});
// Generated by CoffeeScript 1.10.0
restoreOrder
();
/*
LemonLDAP::NG Portal jQuery scripts
/* Display message */
$
(
"
div.message
"
).
fadeIn
(
'
slow
'
);
Used variables:
- displaytab
- choicetab
- login
- newwindow
- antiframe
*/
/* Set timezone */
$
(
"
input[name=timezone]
"
).
val
(
-
(
new
Date
().
getTimezoneOffset
()
/
60
));
(
function
()
{
var
activeTimer
,
antiframe
,
getOrder
,
isHiddenFormValueSet
,
newwindow
,
ping
,
restoreOrder
,
setSelector
,
translate
,
translatePage
,
indexOf
=
[].
indexOf
||
function
(
item
)
{
for
(
var
i
=
0
,
l
=
this
.
length
;
i
<
l
;
i
++
)
{
if
(
i
in
this
&&
this
[
i
]
===
item
)
return
i
;
}
return
-
1
;
};
/* Menu tabs */
var
menuTabs
=
$
(
"
#menu
"
).
tabs
({
active
:
0
});
var
menuIndex
=
$
(
'
#menu a[href="#
'
+
displaytab
+
'
"]
'
).
parent
().
index
();
if
(
menuIndex
<
0
)
{
menuIndex
=
0
;
}
menuTabs
.
tabs
(
"
option
"
,
"
active
"
,
menuIndex
);
/* Authentication choice tabs */
var
authMenuTabs
=
$
(
"
#authMenu
"
).
tabs
({
active
:
0
});
// TODO: cookie
//$("#authMenu").tabs({cookie: {name: 'lemonldapauthchoice'}});
if
(
choicetab
)
{
var
authMenuIndex
=
$
(
'
#authMenu a[href="#
'
+
choicetab
+
'
"]
'
).
parent
().
index
();
authMenuTabs
.
tabs
(
"
option
"
,
"
active
"
,
authMenuIndex
);
}
/* Focus on first visible input */
$
(
"
input[type!=hidden]:first
"
).
focus
();
if
(
login
)
{
$
(
"
input[type=password]:first
"
).
focus
();
}
/* Open links in new windows */
if
(
newwindow
)
{
$
(
'
#appslist a
'
).
attr
(
"
target
"
,
"
_blank
"
);
}
/* Complete removeOther link */
if
(
$
(
"
p.removeOther
"
).
length
)
{
var
action
=
$
(
"
form.login
"
).
attr
(
"
action
"
);
var
method
=
$
(
"
form.login
"
).
attr
(
"
method
"
);
var
back_url
=
""
;
if
(
action
.
indexOf
(
"
?
"
)
!=
-
1
)
{
back_url
=
action
.
substring
(
0
,
action
.
indexOf
(
"
?
"
))
+
"
?
"
;
}
else
{
back_url
=
action
+
"
?
"
;
}
$
(
"
form.login input[type=hidden]
"
).
each
(
function
(
index
)
{
back_url
=
back_url
+
"
&
"
+
$
(
this
).
attr
(
"
name
"
)
+
"
=
"
+
$
(
this
).
val
();
translatePage
=
function
(
lang
)
{
return
$
(
"
[trspan]
"
).
each
(
function
()
{
return
this
.
text
(
translate
(
this
.
attr
(
'
trspan
'
)));
});
};
var
link
=
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
);
link
=
link
+
"
&method=
"
+
method
+
"
&url=
"
+
$
.
base64Encode
(
back_url
);
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
,
link
);
}
});
/* Code from http://snipplr.com/view/29434/ */
// set the list selector
var
setSelector
=
"
#appslist
"
;
// function that writes the list order to session
function
getOrder
()
{
// save custom order to persistent session
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:
{
storeAppsListOrder
:
$
(
setSelector
).
sortable
(
"
toArray
"
).
join
()
},
dataType
:
'
json
'
});
}
// function that restores the list order from session
function
restoreOrder
()
{
var
list
=
$
(
setSelector
);
if
(
list
==
null
)
return
;
// fetch the session value (saved order)
if
(
!
appslistorder
)
return
;
// make array from saved order
var
IDs
=
appslistorder
.
split
(
"
,
"
);
// fetch current order
var
items
=
list
.
sortable
(
"
toArray
"
);
translate
=
function
(
str
)
{};
// make array from current order
var
rebuild
=
new
Array
();
for
(
var
v
=
0
,
len
=
items
.
length
;
v
<
len
;
v
++
)
{
rebuild
[
items
[
v
]]
=
items
[
v
];
}
newwindow
=
window
.
newwindow
.
match
(
'
1
'
)
?
true
:
false
;
for
(
var
i
=
0
,
n
=
IDs
.
length
;
i
<
n
;
i
++
)
{
antiframe
=
window
.
antiframe
.
match
(
'
0
'
)
?
false
:
true
;
// item id from saved order
var
itemID
=
IDs
[
i
];
activeTimer
=
window
.
activeTimer
.
match
(
'
0
'
)
?
false
:
true
;
if
(
itemID
in
rebuild
)
{
setSelector
=
"
#appslist
"
;
// select item id from current order
var
item
=
rebuild
[
itemID
];
// select the item according to current order
var
child
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
item
);
getOrder
=
function
()
{
return
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:
{
storeAppsListOrder
:
$
(
setSelector
).
sortable
(
"
toArray
"
).
join
()
},
dataType
:
'
json
'
});
};
// select the item according to the saved order
var
savedOrd
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
itemID
);
restoreOrder
=
function
()
{
var
IDs
,
child
,
i
,
item
,
itemID
,
items
,
j
,
len
,
len1
,
list
,
rebuild
,
savedOrd
,
v
;
list
=
$
(
setSelector
);
if
(
!
((
list
!=
null
)
&&
appslistorder
))
{
return
null
;
}
IDs
=
appslistorder
.
split
(
'
,
'
);
items
=
list
.
sortable
(
"
toArray
"
);
rebuild
=
[];
for
(
i
=
0
,
len
=
items
.
length
;
i
<
len
;
i
++
)
{
v
=
items
[
i
];
rebuild
[
v
]
=
v
;
}
for
(
j
=
0
,
len1
=
IDs
.
length
;
j
<
len1
;
j
++
)
{
itemID
=
IDs
[
j
];
if
(
indexOf
.
call
(
rebuild
,
itemID
)
>=
0
)
{
item
=
rebuild
[
itemID
];
child
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
item
);
savedOrd
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
itemID
);
child
.
remove
();
$
(
setSelector
+
"
.ui-sortable
"
).
filter
(
"
:first
"
).
append
(
savedOrd
);
}
}
return
1
;
};
isHiddenFormValueSet
=
function
(
option
)
{
return
$
(
'
#lmhidden_
'
+
option
).
length
;
};
ping
=
function
()
{
return
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:
{
ping
:
1
},
dataType
:
'
json
'
,
success
:
function
(
data
)
{
if
(
data
.
auth
)
{
return
setTimeout
(
'
ping();
'
,
pingInterval
);
}
else
{
return
location
.
reload
(
true
);
}
}
});
};
// remove all the items
child
.
remove
();
window
.
ping
=
ping
;
// add the items in turn according to saved order
// we need to filter here since the "ui-sortable"
// class is applied to all ul elements and we
// only want the very first! You can modify this
// to support multiple lists - not tested!
$
(
setSelector
+
"
.ui-sortable
"
).
filter
(
"
:first
"
).
append
(
savedOrd
);
$
(
document
).
ready
(
function
()
{
var
action
,
authMenuTabs
,
back_url
,
link
,
menuIndex
,
menuTabs
,
method
;
if
(
antiframe
&&
top
!==
self
)
{
top
.
location
.
href
=
location
.
href
;
}
}
}
/* function boolean isHiddenFormValueSet(string option)
* Check if an hidden option is set
* @param option Option name
* @return true if option is set, false else
*/
function
isHiddenFormValueSet
(
option
)
{
if
(
$
(
'
#lmhidden_
'
+
option
).
length
)
{
return
true
;
}
else
{
return
false
;
}
}
/* function void ping()
* Check if session is alive on server side
* @return nothing
*/
function
ping
()
{
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:
{
ping
:
1
},
dataType
:
'
json
'
,
success
:
function
(
data
)
{
if
(
!
data
.
auth
)
{
location
.
reload
(
true
);
$
(
"
#appslist
"
).
sortable
({
axis
:
"
y
"
,
cursor
:
"
move
"
,
opacity
:
0.5
,
revert
:
true
,
items
:
"
> div.category
"
,
update
:
function
()
{
return
getOrder
();
}
else
{
setTimeout
(
'
ping();
'
,
pingInterval
);
});
restoreOrder
();
$
(
"
div.message
"
).
fadeIn
(
'
slow
'
);
$
(
"
input[name=timezone]
"
).
val
(
-
(
new
Date
().
getTimezoneOffset
()
/
60
));
menuTabs
=
$
(
"
#menu
"
).
tabs
({
active
:
0
});
menuIndex
=
$
(
'
#menu a[href="#
'
+
displaytab
+
'
"]
'
).
parent
().
index
();
if
(
menuIndex
<
0
)
{
menuIndex
=
0
;
}
menuTabs
.
tabs
(
"
option
"
,
"
active
"
,
menuIndex
);
authMenuTabs
=
$
(
"
#authMenu
"
).
tabs
({
active
:
0
});
if
(
choicetab
)
{
authMenuTabs
.
tabs
(
"
option
"
,
"
active
"
,
$
(
'
#authMenu a[href="#
'
+
choicetab
+
'
"]
'
).
parent
().
index
());
}
if
(
login
)
{
$
(
"
input[type=password]:first
"
).
focus
();
}
else
{
$
(
"
input[type!=hidden]:first
"
).
focus
();
}
if
(
newwindow
)
{
$
(
'
#appslist a
'
).
attr
(
"
target
"
,
"
_blank
"
);
}
if
(
$
(
"
p.removeOther
"
).
length
)
{
action
=
$
(
"
form.login
"
).
attr
(
"
action
"
);
method
=
$
(
"
form.login
"
).
attr
(
"
method
"
);
back_url
=
""
;
if
(
action
.
indexOf
(
"
?
"
)
!==
-
1
)
{
action
.
substring
(
0
,
action
.
indexOf
(
"
?
"
))
+
"
?
"
;
}
else
{
back_url
=
action
+
"
?
"
;
}
$
(
"
form.login input[type=hidden]
"
).
each
(
function
(
index
)
{
return
back_url
+=
"
&
"
+
$
(
this
).
attr
(
"
name
"
)
+
"
=
"
+
$
(
this
).
val
();
});
link
=
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
)
+
"
&method=
"
+
method
+
"
&url=
"
+
btoa
(
back_url
);
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
,
link
);
}
return
translatePage
(
lang
);
});
}
\ No newline at end of file
}).
call
(
this
);
lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js
View file @
1be53614
if
(
newwindow
.
match
(
"
1
"
)){
newwindow
=
true
}
else
{
newwindow
=
false
}
if
(
antiframe
.
match
(
"
0
"
)){
antiframe
=
false
}
else
{
antiframe
=
true
}
if
(
activeTimer
.
match
(
"
0
"
)){
activeTimer
=
false
}
else
{
activeTimer
=
true
}
$
(
document
).
ready
(
function
(){
if
(
antiframe
&&
top
!=
self
){
top
.
location
.
href
=
location
.
href
}
$
(
"
#appslist
"
).
sortable
({
axis
:
"
y
"
,
cursor
:
"
move
"
,
opacity
:
0.5
,
revert
:
true
,
items
:
"
> div.category
"
,
update
:
function
(){
getOrder
()}});
restoreOrder
();
$
(
"
div.message
"
).
fadeIn
(
"
slow
"
);
$
(
"
input[name=timezone]
"
).
val
(
-
(
new
Date
().
getTimezoneOffset
()
/
60
));
var
b
=
$
(
"
#menu
"
).
tabs
({
active
:
0
});
var
e
=
$
(
'
#menu a[href="#
'
+
displaytab
+
'
"]
'
).
parent
().
index
();
if
(
e
<
0
){
e
=
0
}
b
.
tabs
(
"
option
"
,
"
active
"
,
e
);
var
a
=
$
(
"
#authMenu
"
).
tabs
({
active
:
0
});
if
(
choicetab
){
var
d
=
$
(
'
#authMenu a[href="#
'
+
choicetab
+
'
"]
'
).
parent
().
index
();
a
.
tabs
(
"
option
"
,
"
active
"
,
d
)}
$
(
"
input[type!=hidden]:first
"
).
focus
();
if
(
login
){
$
(
"
input[type=password]:first
"
).
focus
()}
if
(
newwindow
){
$
(
"
#appslist a
"
).
attr
(
"
target
"
,
"
_blank
"
)}
if
(
$
(
"
p.removeOther
"
).
length
){
var
g
=
$
(
"
form.login
"
).
attr
(
"
action
"
);
var
h
=
$
(
"
form.login
"
).
attr
(
"
method
"
);
var
c
=
""
;
if
(
g
.
indexOf
(
"
?
"
)
!=-
1
){
c
=
g
.
substring
(
0
,
g
.
indexOf
(
"
?
"
))
+
"
?
"
}
else
{
c
=
g
+
"
?
"
}
$
(
"
form.login input[type=hidden]
"
).
each
(
function
(
i
){
c
=
c
+
"
&
"
+
$
(
this
).
attr
(
"
name
"
)
+
"
=
"
+
$
(
this
).
val
()});
var
f
=
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
);
f
=
f
+
"
&method=
"
+
h
+
"
&url=
"
+
$
.
base64Encode
(
c
);
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
,
f
)}});
var
setSelector
=
"
#appslist
"
;
function
getOrder
(){
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:{
storeAppsListOrder
:
$
(
setSelector
).
sortable
(
"
toArray
"
).
join
()},
dataType
:
"
json
"
})}
function
restoreOrder
(){
var
h
=
$
(
setSelector
);
if
(
h
==
null
){
return
}
if
(
!
appslistorder
){
return
}
var
d
=
appslistorder
.
split
(
"
,
"
);
var
j
=
h
.
sortable
(
"
toArray
"
);
var
k
=
new
Array
();
for
(
var
l
=
0
,
f
=
j
.
length
;
l
<
f
;
l
++
){
k
[
j
[
l
]]
=
j
[
l
]}
for
(
var
e
=
0
,
c
=
d
.
length
;
e
<
c
;
e
++
){
var
a
=
d
[
e
];
if
(
a
in
k
){
var
m
=
k
[
a
];
var
b
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
m
);
var
g
=
$
(
setSelector
+
"
.ui-sortable
"
).
children
(
"
#
"
+
a
);
b
.
remove
();
$
(
setSelector
+
"
.ui-sortable
"
).
filter
(
"
:first
"
).
append
(
g
)}}}
function
isHiddenFormValueSet
(
a
){
if
(
$
(
"
#lmhidden_
"
+
a
).
length
){
return
true
}
else
{
return
false
}}
function
ping
(){
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:{
ping
:
1
},
dataType
:
"
json
"
,
success
:
function
(
a
){
if
(
!
a
.
auth
){
location
.
reload
(
true
)}
else
{
setTimeout
(
"
ping();
"
,
pingInterval
)}}})};
\ No newline at end of file
(
function
(){
var
c
,
d
,
i
,
a
,
g
,
j
,
h
,
e
,
b
,
k
,
f
=
[].
indexOf
||
function
(
o
){
for
(
var
n
=
0
,
m
=
this
.
length
;
n
<
m
;
n
++
){
if
(
n
in
this
&&
this
[
n
]
===
o
){
return
n
}}
return
-
1
};
k
=
function
(
l
){
return
$
(
"
[trspan]
"
).
each
(
function
(){
return
this
.
text
(
b
(
this
.
attr
(
"
trspan
"
)))})};
b
=
function
(
l
){};
g
=
window
.
newwindow
.
match
(
"
1
"
)?
true
:
false
;
d
=
window
.
antiframe
.
match
(
"
0
"
)?
false
:
true
;
c
=
window
.
activeTimer
.
match
(
"
0
"
)?
false
:
true
;
e
=
"
#appslist
"
;
i
=
function
(){
return
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:{
storeAppsListOrder
:
$
(
e
).
sortable
(
"
toArray
"
).
join
()},
dataType
:
"
json
"
})};
h
=
function
(){
var
n
,
m
,
q
,
y
,
l
,
u
,
p
,
r
,
o
,
t
,
w
,
s
,
x
;
t
=
$
(
e
);
if
(
!
((
t
!=
null
)
&&
appslistorder
)){
return
null
}
n
=
appslistorder
.
split
(
"
,
"
);
u
=
t
.
sortable
(
"
toArray
"
);
w
=
[];
for
(
q
=
0
,
r
=
u
.
length
;
q
<
r
;
q
++
){
x
=
u
[
q
];
w
[
x
]
=
x
}
for
(
p
=
0
,
o
=
n
.
length
;
p
<
o
;
p
++
){
l
=
n
[
p
];
if
(
f
.
call
(
w
,
l
)
>=
0
){
y
=
w
[
l
];
m
=
$
(
e
+
"
.ui-sortable
"
).
children
(
"
#
"
+
y
);
s
=
$
(
e
+
"
.ui-sortable
"
).
children
(
"
#
"
+
l
);
m
.
remove
();
$
(
e
+
"
.ui-sortable
"
).
filter
(
"
:first
"
).
append
(
s
)}}
return
1
};
a
=
function
(
l
){
return
$
(
"
#lmhidden_
"
+
l
).
length
};
j
=
function
(){
return
$
.
ajax
({
type
:
"
POST
"
,
url
:
scriptname
,
data
:{
ping
:
1
},
dataType
:
"
json
"
,
success
:
function
(
l
){
if
(
l
.
auth
){
return
setTimeout
(
"
ping();
"
,
pingInterval
)}
else
{
return
location
.
reload
(
true
)}}})};
window
.
ping
=
j
;
$
(
document
).
ready
(
function
(){
var
q
,
m
,
n
,
p
,
o
,
l
,
r
;
if
(
d
&&
top
!==
self
){
top
.
location
.
href
=
location
.
href
}
$
(
"
#appslist
"
).
sortable
({
axis
:
"
y
"
,
cursor
:
"
move
"
,
opacity
:
0.5
,
revert
:
true
,
items
:
"
> div.category
"
,
update
:
function
(){
return
i
()}});
h
();
$
(
"
div.message
"
).
fadeIn
(
"
slow
"
);
$
(
"
input[name=timezone]
"
).
val
(
-
(
new
Date
().
getTimezoneOffset
()
/
60
));
l
=
$
(
"
#menu
"
).
tabs
({
active
:
0
});
o
=
$
(
'
#menu a[href="#
'
+
displaytab
+
'
"]
'
).
parent
().
index
();
if
(
o
<
0
){
o
=
0
}
l
.
tabs
(
"
option
"
,
"
active
"
,
o
);
m
=
$
(
"
#authMenu
"
).
tabs
({
active
:
0
});
if
(
choicetab
){
m
.
tabs
(
"
option
"
,
"
active
"
,
$
(
'
#authMenu a[href="#
'
+
choicetab
+
'
"]
'
).
parent
().
index
())}
if
(
login
){
$
(
"
input[type=password]:first
"
).
focus
()}
else
{
$
(
"
input[type!=hidden]:first
"
).
focus
()}
if
(
g
){
$
(
"
#appslist a
"
).
attr
(
"
target
"
,
"
_blank
"
)}
if
(
$
(
"
p.removeOther
"
).
length
){
q
=
$
(
"
form.login
"
).
attr
(
"
action
"
);
r
=
$
(
"
form.login
"
).
attr
(
"
method
"
);
n
=
""
;
if
(
q
.
indexOf
(
"
?
"
)
!==-
1
){
q
.
substring
(
0
,
q
.
indexOf
(
"
?
"
))
+
"
?
"
}
else
{
n
=
q
+
"
?
"
}
$
(
"
form.login input[type=hidden]
"
).
each
(
function
(
s
){
return
n
+=
"
&
"
+
$
(
this
).
attr
(
"
name
"
)
+
"
=
"
+
$
(
this
).
val
()});
p
=
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
)
+
"
&method=
"
+
r
+
"
&url=
"
+
btoa
(
n
);
$
(
"
p.removeOther a
"
).
attr
(
"
href
"
,
p
)}
return
k
(
lang
)})}).
call
(
this
);
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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