Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
e082aadc
Commit
e082aadc
authored
Mar 10, 2016
by
Ad Schellevis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(legacy) refactor services_upnp.php
parent
cdb17e69
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
326 additions
and
3445 deletions
+326
-3445
autosuggest.js
src/www/javascript/autosuggest.js
+0
-335
LICENSE
src/www/javascript/domTT/LICENSE
+0
-202
behaviour.js
src/www/javascript/domTT/behaviour.js
+0
-254
domLib.js
src/www/javascript/domTT/domLib.js
+0
-706
domTT.js
src/www/javascript/domTT/domTT.js
+0
-1132
fadomatic.js
src/www/javascript/domTT/fadomatic.js
+0
-180
row_helper_dynamic.js
src/www/javascript/row_helper_dynamic.js
+0
-98
suggestions.js
src/www/javascript/suggestions.js
+0
-33
services_upnp.php
src/www/services_upnp.php
+326
-505
No files found.
src/www/javascript/autosuggest.js
deleted
100644 → 0
View file @
cdb17e69
/**
* An autosuggest textbox control.
* @class
* @scope public
*/
function
AutoSuggestControl
(
oTextbox
/*:HTMLInputElement*/
,
oProvider
/*:SuggestionProvider*/
)
{
/**
* The currently selected suggestions.
* @scope private
*/
this
.
cur
/*:int*/
=
-
1
;
/**
* The dropdown list layer.
* @scope private
*/
this
.
layer
=
null
;
/**
* Suggestion provider for the autosuggest feature.
* @scope private.
*/
this
.
provider
/*:SuggestionProvider*/
=
oProvider
;
/**
* The textbox to capture.
* @scope private
*/
this
.
textbox
/*:HTMLInputElement*/
=
oTextbox
;
//initialize the control
this
.
init
();
}
/**
* Autosuggests one or more suggestions for what the user has typed.
* If no suggestions are passed in, then no autosuggest occurs.
* @scope private
* @param aSuggestions An array of suggestion strings.
* @param bTypeAhead If the control should provide a type ahead suggestion.
*/
AutoSuggestControl
.
prototype
.
autosuggest
=
function
(
aSuggestions
/*:Array*/
,
bTypeAhead
/*:boolean*/
)
{
//make sure there's at least one suggestion
if
(
aSuggestions
.
length
>
0
)
{
if
(
bTypeAhead
)
{
this
.
typeAhead
(
aSuggestions
[
0
]);
}
this
.
showSuggestions
(
aSuggestions
);
}
else
{
this
.
hideSuggestions
();
}
};
/**
* Creates the dropdown layer to display multiple suggestions.
* @scope private
*/
AutoSuggestControl
.
prototype
.
createDropDown
=
function
()
{
var
oThis
=
this
;
//create the layer and assign styles
this
.
layer
=
document
.
createElement
(
"
div
"
);
this
.
layer
.
className
=
"
suggestions
"
;
this
.
layer
.
style
.
visibility
=
"
hidden
"
;
this
.
layer
.
style
.
width
=
this
.
textbox
.
offsetWidth
;
//when the user clicks on the a suggestion, get the text (innerHTML)
//and place it into a textbox
this
.
layer
.
onmousedown
=
this
.
layer
.
onmouseup
=
this
.
layer
.
onmouseover
=
function
(
oEvent
)
{
oEvent
=
oEvent
||
window
.
event
;
oTarget
=
oEvent
.
target
||
oEvent
.
srcElement
;
if
(
oEvent
.
type
==
"
mousedown
"
)
{
oThis
.
textbox
.
value
=
oTarget
.
firstChild
.
nodeValue
;
oThis
.
hideSuggestions
();
}
else
if
(
oEvent
.
type
==
"
mouseover
"
)
{
oThis
.
highlightSuggestion
(
oTarget
);
}
else
{
oThis
.
textbox
.
focus
();
}
};
document
.
body
.
appendChild
(
this
.
layer
);
};
/**
* Gets the left coordinate of the textbox.
* @scope private
* @return The left coordinate of the textbox in pixels.
*/
AutoSuggestControl
.
prototype
.
getLeft
=
function
()
/*:int*/
{
var
oNode
=
this
.
textbox
;
var
iLeft
=
0
;
while
(
oNode
.
tagName
!=
"
BODY
"
)
{
iLeft
+=
oNode
.
offsetLeft
;
oNode
=
oNode
.
offsetParent
;
}
return
iLeft
;
};
/**
* Gets the top coordinate of the textbox.
* @scope private
* @return The top coordinate of the textbox in pixels.
*/
AutoSuggestControl
.
prototype
.
getTop
=
function
()
/*:int*/
{
var
oNode
=
this
.
textbox
;
var
iTop
=
0
;
while
(
oNode
.
tagName
!=
"
BODY
"
)
{
iTop
+=
oNode
.
offsetTop
;
oNode
=
oNode
.
offsetParent
;
}
return
iTop
;
};
/**
* Handles three keydown events.
* @scope private
* @param oEvent The event object for the keydown event.
*/
AutoSuggestControl
.
prototype
.
handleKeyDown
=
function
(
oEvent
/*:Event*/
)
{
switch
(
oEvent
.
keyCode
)
{
case
38
:
//up arrow
this
.
previousSuggestion
();
break
;
case
40
:
//down arrow
this
.
nextSuggestion
();
break
;
case
13
:
//enter
this
.
hideSuggestions
();
break
;
}
};
/**
* Handles keyup events.
* @scope private
* @param oEvent The event object for the keyup event.
*/
AutoSuggestControl
.
prototype
.
handleKeyUp
=
function
(
oEvent
/*:Event*/
)
{
var
iKeyCode
=
oEvent
.
keyCode
;
//for backspace (8) and delete (46), shows suggestions without typeahead
if
(
iKeyCode
==
8
||
iKeyCode
==
46
)
{
this
.
provider
.
requestSuggestions
(
this
,
false
);
//make sure not to interfere with non-character keys
}
else
if
(
iKeyCode
<
32
||
(
iKeyCode
>=
33
&&
iKeyCode
<
46
)
||
(
iKeyCode
>=
112
&&
iKeyCode
<=
123
))
{
//ignore
}
else
{
//request suggestions from the suggestion provider with typeahead
this
.
provider
.
requestSuggestions
(
this
,
true
);
}
};
/**
* Hides the suggestion dropdown.
* @scope private
*/
AutoSuggestControl
.
prototype
.
hideSuggestions
=
function
()
{
this
.
layer
.
style
.
visibility
=
"
hidden
"
;
};
/**
* Highlights the given node in the suggestions dropdown.
* @scope private
* @param oSuggestionNode The node representing a suggestion in the dropdown.
*/
AutoSuggestControl
.
prototype
.
highlightSuggestion
=
function
(
oSuggestionNode
)
{
for
(
var
i
=
0
;
i
<
this
.
layer
.
childNodes
.
length
;
i
++
)
{
var
oNode
=
this
.
layer
.
childNodes
[
i
];
if
(
oNode
==
oSuggestionNode
)
{
oNode
.
className
=
"
current
"
;
}
else
if
(
oNode
.
className
==
"
current
"
)
{
oNode
.
className
=
""
;
}
}
};
/**
* Initializes the textbox with event handlers for
* auto suggest functionality.
* @scope private
*/
AutoSuggestControl
.
prototype
.
init
=
function
()
{
//save a reference to this object
var
oThis
=
this
;
//assign the onkeyup event handler
this
.
textbox
.
onkeyup
=
function
(
oEvent
)
{
//check for the proper location of the event object
if
(
!
oEvent
)
{
oEvent
=
window
.
event
;
}
//call the handleKeyUp() method with the event object
oThis
.
handleKeyUp
(
oEvent
);
};
//assign onkeydown event handler
this
.
textbox
.
onkeydown
=
function
(
oEvent
)
{
//check for the proper location of the event object
if
(
!
oEvent
)
{
oEvent
=
window
.
event
;
}
//call the handleKeyDown() method with the event object
oThis
.
handleKeyDown
(
oEvent
);
};
//assign onblur event handler (hides suggestions)
this
.
textbox
.
onblur
=
function
()
{
oThis
.
hideSuggestions
();
};
//create the suggestions dropdown
this
.
createDropDown
();
};
/**
* Highlights the next suggestion in the dropdown and
* places the suggestion into the textbox.
* @scope private
*/
AutoSuggestControl
.
prototype
.
nextSuggestion
=
function
()
{
var
cSuggestionNodes
=
this
.
layer
.
childNodes
;
if
(
cSuggestionNodes
.
length
>
0
&&
this
.
cur
<
cSuggestionNodes
.
length
-
1
)
{
var
oNode
=
cSuggestionNodes
[
++
this
.
cur
];
this
.
highlightSuggestion
(
oNode
);
this
.
textbox
.
value
=
oNode
.
firstChild
.
nodeValue
;
}
};
/**
* Highlights the previous suggestion in the dropdown and
* places the suggestion into the textbox.
* @scope private
*/
AutoSuggestControl
.
prototype
.
previousSuggestion
=
function
()
{
var
cSuggestionNodes
=
this
.
layer
.
childNodes
;
if
(
cSuggestionNodes
.
length
>
0
&&
this
.
cur
>
0
)
{
var
oNode
=
cSuggestionNodes
[
--
this
.
cur
];
this
.
highlightSuggestion
(
oNode
);
this
.
textbox
.
value
=
oNode
.
firstChild
.
nodeValue
;
}
};
/**
* Selects a range of text in the textbox.
* @scope public
* @param iStart The start index (base 0) of the selection.
* @param iLength The number of characters to select.
*/
AutoSuggestControl
.
prototype
.
selectRange
=
function
(
iStart
/*:int*/
,
iLength
/*:int*/
)
{
//use text ranges for Internet Explorer
if
(
this
.
textbox
.
createTextRange
)
{
var
oRange
=
this
.
textbox
.
createTextRange
();
oRange
.
moveStart
(
"
character
"
,
iStart
);
oRange
.
moveEnd
(
"
character
"
,
iLength
-
this
.
textbox
.
value
.
length
);
oRange
.
select
();
//use setSelectionRange() for Mozilla
}
else
if
(
this
.
textbox
.
setSelectionRange
)
{
this
.
textbox
.
setSelectionRange
(
iStart
,
iLength
);
}
//set focus back to the textbox
this
.
textbox
.
focus
();
};
/**
* Builds the suggestion layer contents, moves it into position,
* and displays the layer.
* @scope private
* @param aSuggestions An array of suggestions for the control.
*/
AutoSuggestControl
.
prototype
.
showSuggestions
=
function
(
aSuggestions
/*:Array*/
)
{
var
oDiv
=
null
;
this
.
layer
.
innerHTML
=
""
;
//clear contents of the layer
for
(
var
i
=
0
;
i
<
aSuggestions
.
length
;
i
++
)
{
oDiv
=
document
.
createElement
(
"
div
"
);
oDiv
.
appendChild
(
document
.
createTextNode
(
aSuggestions
[
i
]));
this
.
layer
.
appendChild
(
oDiv
);
}
this
.
layer
.
style
.
left
=
this
.
getLeft
()
+
"
px
"
;
this
.
layer
.
style
.
top
=
(
this
.
getTop
()
+
this
.
textbox
.
offsetHeight
)
+
"
px
"
;
this
.
layer
.
style
.
visibility
=
"
visible
"
;
};
/**
* Inserts a suggestion into the textbox, highlighting the
* suggested part of the text.
* @scope private
* @param sSuggestion The suggestion for the textbox.
*/
AutoSuggestControl
.
prototype
.
typeAhead
=
function
(
sSuggestion
/*:String*/
)
{
//check for support of typeahead functionality
if
(
this
.
textbox
.
createTextRange
||
this
.
textbox
.
setSelectionRange
){
var
iLen
=
this
.
textbox
.
value
.
length
;
this
.
textbox
.
value
=
sSuggestion
;
this
.
selectRange
(
iLen
,
sSuggestion
.
length
);
}
};
src/www/javascript/domTT/LICENSE
deleted
100644 → 0
View file @
cdb17e69
This diff is collapsed.
Click to expand it.
src/www/javascript/domTT/behaviour.js
deleted
100644 → 0
View file @
cdb17e69
/*
Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work
of Simon Willison (see comments by Simon below).
Description:
Uses css selectors to apply javascript behaviours to enable
unobtrusive javascript in html documents.
Usage:
var myrules = {
'b.someclass' : function(element){
element.onclick = function(){
alert(this.innerHTML);
}
},
'#someid u' : function(element){
element.onmouseover = function(){
this.innerHTML = "BLAH!";
}
}
};
Behaviour.register(myrules);
// Call Behaviour.apply() to re-apply the rules (if you
// update the dom, etc).
License:
This file is entirely BSD licensed.
More information:
http://ripcord.co.nz/behaviour/
*/
var
Behaviour
=
{
list
:
new
Array
,
register
:
function
(
sheet
){
Behaviour
.
list
.
push
(
sheet
);
},
start
:
function
(){
Behaviour
.
addLoadEvent
(
function
(){
Behaviour
.
apply
();
});
},
apply
:
function
(){
for
(
h
=
0
;
sheet
=
Behaviour
.
list
[
h
];
h
++
){
for
(
selector
in
sheet
){
list
=
document
.
getElementsBySelector
(
selector
);
if
(
!
list
){
continue
;
}
for
(
i
=
0
;
element
=
list
[
i
];
i
++
){
sheet
[
selector
](
element
);
}
}
}
},
addLoadEvent
:
function
(
func
){
var
oldonload
=
window
.
onload
;
if
(
typeof
window
.
onload
!=
'
function
'
)
{
window
.
onload
=
func
;
}
else
{
window
.
onload
=
function
()
{
oldonload
();
func
();
};
}
}
};
Behaviour
.
start
();
/*
The following code is Copyright (C) Simon Willison 2004.
document.getElementsBySelector(selector)
- returns an array of element objects from the current document
matching the CSS selector. Selectors can contain element names,
class names and ids and can be nested. For example:
elements = document.getElementsBySelect('div#main p a.external')
Will return an array of all 'a' elements with 'external' in their
class attribute that are contained inside 'p' elements that are
contained inside the 'div' element which has id="main"
New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
See http://www.w3.org/TR/css3-selectors/#attribute-selectors
Version 0.4 - Simon Willison, March 25th 2003
-- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
-- Opera 7 fails
*/
function
getAllChildren
(
e
)
{
// Returns all children of element. Workaround required for IE5/Windows. Ugh.
return
e
.
all
?
e
.
all
:
e
.
getElementsByTagName
(
'
*
'
);
}
document
.
getElementsBySelector
=
function
(
selector
)
{
// Attempt to fail gracefully in lesser browsers
if
(
!
document
.
getElementsByTagName
)
{
return
new
Array
();
}
// Split selector in to tokens
var
tokens
=
selector
.
split
(
'
'
);
var
currentContext
=
new
Array
(
document
);
for
(
var
i
=
0
;
i
<
tokens
.
length
;
i
++
)
{
token
=
tokens
[
i
].
replace
(
/^
\s
+/
,
''
).
replace
(
/
\s
+$/
,
''
);
if
(
token
.
indexOf
(
'
#
'
)
>
-
1
)
{
// Token is an ID selector
var
bits
=
token
.
split
(
'
#
'
);
var
tagName
=
bits
[
0
];
var
id
=
bits
[
1
];
var
element
=
document
.
getElementById
(
id
);
if
(
tagName
&&
element
.
nodeName
.
toLowerCase
()
!=
tagName
)
{
// tag with that ID not found, return false
return
new
Array
();
}
// Set currentContext to contain just this element
currentContext
=
new
Array
(
element
);
continue
;
// Skip to next token
}
if
(
token
.
indexOf
(
'
.
'
)
>
-
1
)
{
// Token contains a class selector
var
bits
=
token
.
split
(
'
.
'
);
var
tagName
=
bits
[
0
];
var
className
=
bits
[
1
];
if
(
!
tagName
)
{
tagName
=
'
*
'
;
}
// Get elements matching tag, filter them for class selector
var
found
=
new
Array
;
var
foundCount
=
0
;
for
(
var
h
=
0
;
h
<
currentContext
.
length
;
h
++
)
{
var
elements
;
if
(
tagName
==
'
*
'
)
{
elements
=
getAllChildren
(
currentContext
[
h
]);
}
else
{
elements
=
currentContext
[
h
].
getElementsByTagName
(
tagName
);
}
for
(
var
j
=
0
;
j
<
elements
.
length
;
j
++
)
{
found
[
foundCount
++
]
=
elements
[
j
];
}
}
currentContext
=
new
Array
;
var
currentContextIndex
=
0
;
for
(
var
k
=
0
;
k
<
found
.
length
;
k
++
)
{
if
(
found
[
k
].
className
&&
found
[
k
].
className
.
match
(
new
RegExp
(
'
\\
b
'
+
className
+
'
\\
b
'
)))
{
currentContext
[
currentContextIndex
++
]
=
found
[
k
];
}
}
continue
;
// Skip to next token
}
// Code to deal with attribute selectors
if
(
token
.
match
(
/^
(\w
*
)\[(\w
+
)([
=~
\|\^\$\*]?)
=
?
"
?([^\]
"
]
*
)
"
?\]
$/
))
{
var
tagName
=
RegExp
.
$1
;
var
attrName
=
RegExp
.
$2
;
var
attrOperator
=
RegExp
.
$3
;
var
attrValue
=
RegExp
.
$4
;
if
(
!
tagName
)
{
tagName
=
'
*
'
;
}
// Grab all of the tagName elements within current context
var
found
=
new
Array
;
var
foundCount
=
0
;
for
(
var
h
=
0
;
h
<
currentContext
.
length
;
h
++
)
{
var
elements
;
if
(
tagName
==
'
*
'
)
{
elements
=
getAllChildren
(
currentContext
[
h
]);
}
else
{
elements
=
currentContext
[
h
].
getElementsByTagName
(
tagName
);
}
for
(
var
j
=
0
;
j
<
elements
.
length
;
j
++
)
{
found
[
foundCount
++
]
=
elements
[
j
];
}
}
currentContext
=
new
Array
;
var
currentContextIndex
=
0
;
var
checkFunction
;
// This function will be used to filter the elements
switch
(
attrOperator
)
{
case
'
=
'
:
// Equality
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
)
==
attrValue
);
};
break
;
case
'
~
'
:
// Match one of space separated words
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
).
match
(
new
RegExp
(
'
\\
b
'
+
attrValue
+
'
\\
b
'
)));
};
break
;
case
'
|
'
:
// Match start with value followed by optional hyphen
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
).
match
(
new
RegExp
(
'
^
'
+
attrValue
+
'
-?
'
)));
};
break
;
case
'
^
'
:
// Match starts with value
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
).
indexOf
(
attrValue
)
==
0
);
};
break
;
case
'
$
'
:
// Match ends with value - fails with "Warning" in Opera 7
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
).
lastIndexOf
(
attrValue
)
==
e
.
getAttribute
(
attrName
).
length
-
attrValue
.
length
);
};
break
;
case
'
*
'
:
// Match ends with value
checkFunction
=
function
(
e
)
{
return
(
e
.
getAttribute
(
attrName
).
indexOf
(
attrValue
)
>
-
1
);
};
break
;
default
:
// Just test for existence of attribute
checkFunction
=
function
(
e
)
{
return
e
.
getAttribute
(
attrName
);
};
}
currentContext
=
new
Array
;
var
currentContextIndex
=
0
;
for
(
var
k
=
0
;
k
<
found
.
length
;
k
++
)
{
if
(
checkFunction
(
found
[
k
]))
{
currentContext
[
currentContextIndex
++
]
=
found
[
k
];
}
}
// alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
continue
;
// Skip to next token
}
if
(
!
currentContext
[
0
]){
return
;
}
// If we get here, token is JUST an element (not a class or ID selector)
tagName
=
token
;
var
found
=
new
Array
;
var
foundCount
=
0
;
for
(
var
h
=
0
;
h
<
currentContext
.
length
;
h
++
)
{
var
elements
=
currentContext
[
h
].
getElementsByTagName
(
tagName
);
for
(
var
j
=
0
;
j
<
elements
.
length
;
j
++
)
{
found
[
foundCount
++
]
=
elements
[
j
];
}
}
currentContext
=
found
;
}
return
currentContext
;
}
/* That revolting regular expression explained
/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
\---/ \---/\-------------/ \-------/
| | | |
| | | The value
| | ~,|,^,$,* or =
| Attribute
Tag
*/
src/www/javascript/domTT/domLib.js
deleted
100644 → 0
View file @
cdb17e69
This diff is collapsed.
Click to expand it.
src/www/javascript/domTT/domTT.js
deleted
100644 → 0
View file @
cdb17e69
This diff is collapsed.
Click to expand it.
src/www/javascript/domTT/fadomatic.js
deleted
100644 → 0
View file @
cdb17e69
/** $Id$ */
// Title: Fadomatic
// Version: 1.2
// Homepage: http://chimpen.com/fadomatic
// Author: Philip McCarthy <fadomatic@chimpen.com>
// Fade interval in milliseconds
// Make this larger if you experience performance issues
Fadomatic
.
INTERVAL_MILLIS
=
50
;
// Creates a fader
// element - The element to fade
// speed - The speed to fade at, from 0.0 to 100.0
// initialOpacity (optional, default 100) - element's starting opacity, 0 to 100
// minOpacity (optional, default 0) - element's minimum opacity, 0 to 100
// maxOpacity (optional, default 0) - element's minimum opacity, 0 to 100
function
Fadomatic
(
element
,
rate
,
initialOpacity
,
minOpacity
,
maxOpacity
)
{
this
.
_element
=
element
;
this
.
_intervalId
=
null
;
this
.
_rate
=
rate
;
this
.
_isFadeOut
=
true
;
// Set initial opacity and bounds
// NB use 99 instead of 100 to avoid flicker at start of fade
this
.
_minOpacity
=
0
;
this
.
_maxOpacity
=
99
;
this
.
_opacity
=
99
;
if
(
typeof
minOpacity
!=
'
undefined
'
)
{
if
(
minOpacity
<
0
)
{
this
.
_minOpacity
=
0
;
}
else
if
(
minOpacity
>
99
)
{
this
.
_minOpacity
=
99
;
}
else
{
this
.
_minOpacity
=
minOpacity
;
}
}
if
(
typeof
maxOpacity
!=
'
undefined
'
)
{
if
(
maxOpacity
<
0
)
{
this
.
_maxOpacity
=
0
;
}
else
if
(
maxOpacity
>
99
)
{
this
.
_maxOpacity
=
99
;
}
else
{
this
.
_maxOpacity
=
maxOpacity
;
}
if
(
this
.
_maxOpacity
<
this
.
_minOpacity
)
{
this
.
_maxOpacity
=
this
.
_minOpacity
;
}
}
if
(
typeof
initialOpacity
!=
'
undefined
'
)
{
if
(
initialOpacity
>
this
.
_maxOpacity
)
{
this
.
_opacity
=
this
.
_maxOpacity
;
}
else
if
(
initialOpacity
<
this
.
_minOpacity
)
{
this
.
_opacity
=
this
.
_minOpacity
;
}
else
{
this
.
_opacity
=
initialOpacity
;
}
}
// See if we're using W3C opacity, MSIE filter, or just
// toggling visiblity
if
(
typeof
element
.
style
.
opacity
!=
'
undefined
'
)
{
this
.
_updateOpacity
=
this
.
_updateOpacityW3c
;
}
else
if
(
typeof
element
.
style
.
filter
!=
'
undefined
'
)
{
// If there's not an alpha filter on the element already,
// add one
if
(
element
.
style
.
filter
.
indexOf
(
"
alpha
"
)
==
-
1
)
{
// Attempt to preserve existing filters
var
existingFilters
=
""
;
if
(
element
.
style
.
filter
)
{
existingFilters
=
element
.
style
.
filter
+
"
"
;
}
element
.
style
.
filter
=
existingFilters
+
"
alpha(opacity=
"
+
this
.
_opacity
+
"
)
"
;
}
this
.
_updateOpacity
=
this
.
_updateOpacityMSIE
;
}
else
{
this
.
_updateOpacity
=
this
.
_updateVisibility
;
}
this
.
_updateOpacity
();
}
// Initiates a fade out
Fadomatic
.
prototype
.
fadeOut
=
function
()
{
this
.
_isFadeOut
=
true
;
this
.
_beginFade
();
};
// Initiates a fade in
Fadomatic
.
prototype
.
fadeIn
=
function
()
{
this
.
_isFadeOut
=
false
;
this
.
_beginFade
();
};
// Makes the element completely opaque, stops any fade in progress
Fadomatic
.
prototype
.
show
=
function
()
{
this
.
haltFade
();
this
.
_opacity
=
this
.
_maxOpacity
;
this
.
_updateOpacity
();
};
// Makes the element completely transparent, stops any fade in progress
Fadomatic
.
prototype
.
hide
=
function
()
{
this
.
haltFade
();
this
.
_opacity
=
0
;
this
.
_updateOpacity
();
};
// Halts any fade in progress
Fadomatic
.
prototype
.
haltFade
=
function
()
{
clearInterval
(
this
.
_intervalId
);
};
// Resumes a fade where it was halted
Fadomatic
.
prototype
.
resumeFade
=
function
()
{
this
.
_beginFade
();
};
// Pseudo-private members
Fadomatic
.
prototype
.
_beginFade
=
function
()
{
this
.
haltFade
();
var
objref
=
this
;
this
.
_intervalId
=
setInterval
(
function
()
{
objref
.
_tickFade
();
},
Fadomatic
.
INTERVAL_MILLIS
);
};
Fadomatic
.
prototype
.
_tickFade
=
function
()
{
if
(
this
.
_isFadeOut
)
{
this
.
_opacity
-=
this
.
_rate
;
if
(
this
.
_opacity
<
this
.
_minOpacity
)
{
this
.
_opacity
=
this
.
_minOpacity
;
this
.
haltFade
();
}
}
else
{
this
.
_opacity
+=
this
.
_rate
;
if
(
this
.
_opacity
>
this
.
_maxOpacity
)
{
this
.
_opacity
=
this
.
_maxOpacity
;
this
.
haltFade
();
}
}
this
.
_updateOpacity
();
};
Fadomatic
.
prototype
.
_updateVisibility
=
function
()
{
if
(
this
.
_opacity
>
0
)
{
this
.
_element
.
style
.
visibility
=
'
visible
'
;
}
else
{
this
.
_element
.
style
.
visibility
=
'
hidden
'
;
}
};
Fadomatic
.
prototype
.
_updateOpacityW3c
=
function
()
{
this
.
_element
.
style
.
opacity
=
this
.
_opacity
/
100
;
this
.
_updateVisibility
();
};
Fadomatic
.
prototype
.
_updateOpacityMSIE
=
function
()
{
this
.
_element
.
filters
.
alpha
.
opacity
=
this
.
_opacity
;
this
.
_updateVisibility
();
};
Fadomatic
.
prototype
.
_updateOpacity
=
null
;
src/www/javascript/row_helper_dynamic.js
deleted
100644 → 0
View file @
cdb17e69
// Global Variables
var
rowname
=
new
Array
(
99
);
var
rowtype
=
new
Array
(
99
);
var
newrow
=
new
Array
(
99
);
var
rowsize
=
new
Array
(
99
);
// Global variables. Set to javascript code
// that will be eval() after change, add & delete.
var
rowhelper_onChange
=
''
;
var
rowhelper_onAdd
=
''
;
var
rowhelper_onDelete
=
''
;
for
(
i
=
0
;
i
<
99
;
i
++
)
{
rowname
[
i
]
=
''
;
rowtype
[
i
]
=
''
;
newrow
[
i
]
=
''
;
rowsize
[
i
]
=
'
25
'
;
}
var
field_counter_js
=
0
;
var
loaded
=
0
;
var
is_streaming_progress_bar
=
0
;
var
temp_streaming_text
=
""
;
var
addRowTo
=
(
function
()
{
return
(
function
(
tableId
,
objectSize
)
{
var
$
=
jQuery
;
var
d
,
tbody
,
tr
,
td
,
bgc
,
i
,
ii
,
j
,
size
,
className
;
d
=
document
;
tbody
=
d
.
getElementById
(
tableId
).
getElementsByTagName
(
"
tbody
"
).
item
(
0
);
tr
=
d
.
createElement
(
"
tr
"
);
totalrows
++
;
size
=
objectSize
;
for
(
i
=
0
;
i
<
field_counter_js
;
i
++
)
{
if
(
!
objectSize
)
size
=
rowsize
[
i
];
td
=
d
.
createElement
(
"
td
"
);
if
(
typeof
(
rowtype
[
i
])
==
'
function
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' />
"
+
rowtype
[
i
](
rowname
[
i
],
size
,
totalrows
)
+
"
"
;
}
else
if
(
rowtype
[
i
]
==
'
textbox
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><input
"
+
rowhelper_onChange
+
"
size='
"
+
rowsize
[
i
]
+
"
' name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
' />
"
;
}
else
if
(
rowtype
[
i
]
==
'
textbox,ipv4v6
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><input
"
+
rowhelper_onChange
+
"
size='
"
+
rowsize
[
i
]
+
"
' name='
"
+
rowname
[
i
]
+
totalrows
+
"
' class='ipv4v6' id='
"
+
rowname
[
i
]
+
totalrows
+
"
' />
"
;
}
else
if
(
rowtype
[
i
]
==
'
select
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><select
"
+
rowhelper_onChange
+
"
name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
'>
"
+
newrow
[
i
]
+
"
</select>
"
;
}
else
if
(
rowtype
[
i
]
==
'
select,ipv4v6
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><select
"
+
rowhelper_onChange
+
"
name='
"
+
rowname
[
i
]
+
totalrows
+
"
' class='ipv4v6' id='
"
+
rowname
[
i
]
+
totalrows
+
"
'>
"
+
newrow
[
i
]
+
"
</select>
"
;
}
else
if
(
rowtype
[
i
]
==
'
interfaces_selection
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><select
"
+
rowhelper_onChange
+
"
name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
'>
"
+
newrow
[
i
]
+
"
</select>
"
;
}
else
if
(
rowtype
[
i
]
==
'
select_source
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><select
"
+
rowhelper_onChange
+
"
name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
'>
"
+
newrow
[
i
]
+
"
</select>
"
;
}
else
if
(
rowtype
[
i
]
==
'
checkbox
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><input
"
+
rowhelper_onChange
+
"
type='checkbox'name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
' />
"
;
}
else
if
(
rowtype
[
i
]
==
'
input
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><input
"
+
rowhelper_onChange
+
"
class='formfld unknown' size='
"
+
size
+
"
' name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
' />
"
;
}
else
if
(
rowtype
[
i
]
==
'
password
'
)
{
td
.
innerHTML
=
"
<input type='hidden' value='
"
+
totalrows
+
"
' name='
"
+
rowname
[
i
]
+
"
_row-
"
+
totalrows
+
"
' /><input
"
+
rowhelper_onChange
+
"
class='formfld pwd' type='password' name='
"
+
rowname
[
i
]
+
totalrows
+
"
' id='
"
+
rowname
[
i
]
+
totalrows
+
"
' />
"
;
}
tr
.
appendChild
(
td
);
}
td
=
d
.
createElement
(
"
td
"
);
td
.
rowSpan
=
"
1
"
;
td
.
innerHTML
=
'
<a onclick="removeRow(this); return false;" href="#"><span class="fa fa-trash"></span></a>
'
;
tr
.
appendChild
(
td
);
tbody
.
appendChild
(
tr
);
if
(
rowhelper_onAdd
!=
''
)
eval
(
rowhelper_onAdd
);
if
(
$
(
tr
).
ipv4v6ify
)
$
(
tr
).
ipv4v6ify
();
});
})();
function
removeRow
(
el
)
{
var
cel
;
while
(
el
&&
el
.
nodeName
.
toLowerCase
()
!=
"
tr
"
)
el
=
el
.
parentNode
;
if
(
el
&&
el
.
parentNode
)
{
cel
=
el
.
getElementsByTagName
(
"
td
"
).
item
(
0
);
el
.
parentNode
.
removeChild
(
el
);
}
if
(
rowhelper_onDelete
!=
''
)
eval
(
rowhelper_onDelete
);
}
function
find_unique_field_name
(
field_name
)
{
// loop through field_name and strip off -NUMBER
var
last_found_dash
=
0
;
for
(
var
i
=
0
;
i
<
field_name
.
length
;
i
++
)
{
// is this a dash, if so, update
// last_found_dash
if
(
field_name
.
substr
(
i
,
1
)
==
"
-
"
)
last_found_dash
=
i
;
}
if
(
last_found_dash
<
1
)
return
field_name
;
return
(
field_name
.
substr
(
0
,
last_found_dash
));
}
src/www/javascript/suggestions.js
deleted
100644 → 0
View file @
cdb17e69
/**
* Provides suggestions for state names (USA).
* @class
* @scope public
*/
function
StateSuggestions
(
text
)
{
this
.
states
=
text
;
}
/**
* Request suggestions for the given autosuggest control.
* @scope protected
* @param oAutoSuggestControl The autosuggest control to provide suggestions for.
*/
StateSuggestions
.
prototype
.
requestSuggestions
=
function
(
oAutoSuggestControl
/*:AutoSuggestControl*/
,
bTypeAhead
/*:boolean*/
)
{
var
aSuggestions
=
[];
var
sTextboxValue
=
oAutoSuggestControl
.
textbox
.
value
;
if
(
sTextboxValue
.
length
>
0
){
//search for matching states
for
(
var
i
=
0
;
i
<
this
.
states
.
length
;
i
++
)
{
if
(
this
.
states
[
i
].
toLowerCase
().
indexOf
(
sTextboxValue
.
toLowerCase
())
==
0
)
{
aSuggestions
.
push
(
this
.
states
[
i
]);
}
}
}
//provide suggestions to the control
oAutoSuggestControl
.
autosuggest
(
aSuggestions
,
bTypeAhead
);
};
src/www/services_upnp.php
View file @
e082aadc
This diff is collapsed.
Click to expand it.
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