Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
open-source
MetaGer
Commits
8d7736a2
Commit
8d7736a2
authored
Nov 28, 2017
by
Karl Hasselbring
Browse files
Refactoring: JS Dateien aufgeteils und formatiert
parent
11e38c87
Changes
6
Hide whitespace changes
Inline
Side-by-side
gulpfile.js
View file @
8d7736a2
...
...
@@ -17,8 +17,8 @@ elixir(function (mix) {
// js
mix
.
scripts
([
'
lib/jquery.js
'
,
'
lib/jquery-ui.min.js
'
,
'
lib/bootstrap.js
'
,
'
lib/lightslider.js
'
,
'
lib/masonry.js
'
,
'
lib/imagesloaded.js
'
,
'
lib/openpgp.min.js
'
,
'
lib/iframeResizer.min.js
'
,
'
lib/md5.js
'
],
'
public/js/lib.js
'
)
mix
.
scripts
([
'
scriptStartPage.js
'
,
'
results.js
'
],
'
public/js/scriptStartPage.js
'
);
mix
.
scripts
([
'
scriptResultPage.js
'
,
'
results.js
'
],
'
public/js/scriptResultPage.js
'
);
mix
.
scripts
([
'
searchbar.js
'
],
'
public/js/searchbar.js
'
);
mix
.
scripts
([
'
scriptResultPage.js
'
,
'
results.js
'
,
'
quicktips.js
'
],
'
public/js/scriptResultPage.js
'
);
mix
.
scripts
([
'
searchbar.js
'
,
'
focus-creator.js
'
],
'
public/js/searchbar.js
'
);
// utility
mix
.
scripts
([
'
utility.js
'
],
'
public/js/utility.js
'
);
mix
.
less
(
'
utility.less
'
,
'
public/css/utility.css
'
);
...
...
public/js/searchbar.js
View file @
8d7736a2
$
(
function
()
{
loadLocalStorage
();
setSearchbarActionListeners
();
loadInitialCustomFocuses
();
loadInitialSelectedFocus
();
focusChanged
();
});
/**
...
...
@@ -15,28 +11,6 @@ function loadLocalStorage () {
}
}
/**
* Sets all action listeners for this page
*/
function
setSearchbarActionListeners
()
{
$
(
'
.focusCheckbox
'
).
click
(
checkboxCheckListener
);
$
(
'
#addFocusBtn
'
).
click
(()
=>
showFocusCreateDialog
(
''
));
$
(
'
#editFocusBtn
'
).
click
(
editCurrentFocus
);
$
(
'
#toggleOptBtn
'
).
click
(
toggleOptionsDialog
);
$
(
'
.save-focus-btn
'
).
click
(
saveFocus
);
$
(
'
.delete-focus-btn
'
).
click
(
deleteFocus
);
$
(
'
#focus-select
'
).
change
(
focusChanged
);
// Save Focus on clicking enter while in the focus name input
$
(
'
#focus-name
'
).
keyup
(
function
(
event
)
{
if
(
event
.
keyCode
==
13
)
{
saveFocus
();
}
});
$
(
'
#create-focus-modal
'
).
on
(
'
shown.bs.modal
'
,
function
()
{
$
(
'
#focus-name
'
).
focus
();
});
}
function
setSettings
()
{
var
acceptedParams
=
[
'
autocomplete
'
,
'
key
'
,
'
lang
'
,
'
newtab
'
,
'
sprueche
'
];
for
(
var
key
in
localStorage
)
{
...
...
@@ -64,358 +38,4 @@ function setSettings () {
}
}
/**
* Loads all the custom focuses stored in local storage
*/
function
loadInitialCustomFocuses
()
{
for
(
var
key
in
localStorage
)
{
if
(
key
.
startsWith
(
'
focus_
'
))
{
var
focus
=
loadFocusById
(
key
);
addFocus
(
focus
.
name
);
}
}
}
function
loadInitialSelectedFocus
()
{
setFocus
(
getFocusInUrl
());
}
/**
* Shows the focus create dialog
* If an id is given it will try to load a focus for the given id
*/
function
showFocusCreateDialog
(
id
)
{
if
(
id
===
undefined
)
{
id
=
''
;
}
document
.
getElementById
(
'
original-id
'
).
value
=
id
;
$
(
'
#create-focus-modal
'
).
modal
(
'
show
'
);
var
storedFocus
=
loadFocusById
(
id
);
var
focus
=
{};
// Try to load a focus for the given id
$
(
'
#focus-name
'
).
val
(
''
);
uncheckAll
();
if
(
storedFocus
!==
null
)
{
try
{
focus
=
JSON
.
parse
(
localStorage
.
getItem
(
id
));
$
(
'
#focus-name
'
).
val
(
focus
.
name
);
for
(
var
key
in
focus
)
{
if
(
key
.
startsWith
(
'
engine_
'
))
{
$
(
'
.focusCheckbox[name=
'
+
key
+
'
]
'
).
prop
(
'
checked
'
,
true
);
}
}
}
catch
(
ex
)
{
console
.
error
(
ex
);
}
}
toggleDeleteButton
();
}
/**
* Shows the focus create dialog for a given id
*/
function
showFocusEditDialog
(
id
)
{
showFocusCreateDialog
(
id
);
}
function
getCurrentFocus
()
{
return
document
.
getElementById
(
'
focus-select
'
).
value
;
}
/**
* Shows an edit dialog for the current selected focus
*/
function
editCurrentFocus
()
{
var
currentFocus
=
getCurrentFocus
();
showFocusEditDialog
(
currentFocus
);
}
/**
* Shows/Hides the delete button if (no) checkboxes are selected
*/
function
toggleDeleteButton
()
{
if
(
atLeastOneChecked
())
{
$
(
'
.delete-focus-btn
'
).
show
();
}
else
{
$
(
'
.delete-focus-btn
'
).
hide
();
}
}
/**
* Save the current Focus
* Listens for save button
*/
function
saveFocus
()
{
/* Vorprüfungen */
// Falls keine Suchmaschine ausgewählt wurde
if
(
!
atLeastOneChecked
())
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
Please select at least 1 search engine.
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, seleccione al menos un motor de búsqueda.
'
);
break
;
default
:
alert
(
'
Bitte mindestens 1 Suchmaschine auswählen.
'
);
break
;
}
return
;
}
// Falls der Name zu kurz ist oder ungültige Zeichen enthält
var
name
=
document
.
getElementById
(
'
focus-name
'
).
value
;
if
(
!
isValidName
(
name
))
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
No characters other than a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed, at least 1 character
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, introduzca un nombre válido
'
);
break
;
default
:
alert
(
'
Bitte gültigen Namen eingeben:
\n
* Keine Sonderzeichen
\n
* Mindestens 1 Buchstabe
\n
'
);
break
;
}
return
;
}
// Liest die original-id des aktuellen fokus-dialogs (gesetzt wenn man einen Fokus bearbeitet)
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
var
id
=
getIdFromName
(
name
);
var
overwrite
=
true
;
// Wenn bereits ein Fokus mit dem Namen existiert, man diesen aber nicht editiert sondern gerade einen Neuen erstellt
if
(
alreadyInUse
(
name
)
&&
oldId
!==
id
)
{
// Fragt den Nutzer ob er den Fokus überschreiben möchte
if
(
!
confirm
(
'
Name bereits genutzt
\n
überschreiben?
'
))
{
// Falls nicht wird das Speichern abgebrochen
return
;
}
// Ansonsten wird der andere Fokus gelöscht
deleteFocusById
(
id
);
}
/* Fokus speichern */
var
focus
=
{};
// Ausgewählte Suchmaschinen lesen und zu Fokus hinzufügen
$
(
'
input[type=checkbox]:checked
'
).
each
(
function
(
el
)
{
focus
[
$
(
this
).
attr
(
'
name
'
)]
=
$
(
this
).
val
();
});
// Name setzen
focus
[
'
name
'
]
=
name
;
// Alte Version des Fokus löschen (aus localStorage und von der Webseite, falls eine existiert)
if
(
oldId
!==
''
)
{
localStorage
.
removeItem
(
oldId
);
removeFocusById
(
oldId
);
}
// Neue Version des Fokus hinzufügen (zu localStorage und der Webseite)
localStorage
.
setItem
(
id
,
JSON
.
stringify
(
focus
));
addFocus
(
name
);
setFocus
(
id
);
// Fokus-Formular verbergen
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocusById
(
id
)
{
localStorage
.
removeItem
(
id
);
removeFocusById
(
id
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocus
()
{
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
deleteFocusById
(
oldId
);
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Is the name valid (in terms of characters)?
*/
function
isValidName
(
name
)
{
// no Characters other then a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed
// at least 1 character
return
/^
[
a-zA-Z0-9äöüß
\-
_
]
+$/
.
test
(
name
);
}
/**
* Is at least one focus selected?
*/
function
atLeastOneChecked
()
{
return
$
(
'
.focusCheckbox:checked
'
).
length
>
0
;
}
/**
* Is there already a focus with this name?
*/
function
alreadyInUse
(
name
)
{
return
localStorage
.
hasOwnProperty
(
getIdFromName
(
name
));
}
/**
* Adds an option to the focus selector
*/
function
addFocus
(
name
)
{
var
id
=
getIdFromName
(
name
);
$
(
'
#focus-select
'
).
append
(
'
<option value="
'
+
id
+
'
" style="font-family: FontAwesome, sans-serif;">
'
+
name
+
'
</option>
'
);
}
/**
* Remove the focuses html-elements
*/
function
removeFocus
(
name
)
{
removeFocusById
(
getIdFromName
(
name
));
}
/**
* Remove the focuses html-elements
*/
function
removeFocusById
(
id
)
{
if
(
id
==
''
)
{
return
;
}
$
(
'
#focus-select option[value="
'
+
id
+
'
"]
'
).
remove
();
}
/**
* Turns a name into an id
* Converts special characters and spaces
*/
function
getIdFromName
(
name
)
{
name
=
name
.
toLowerCase
();
name
=
name
.
split
(
'
'
).
join
(
'
_
'
);
name
=
name
.
split
(
'
ä
'
).
join
(
'
ae
'
);
name
=
name
.
split
(
'
ö
'
).
join
(
'
oe
'
);
name
=
name
.
split
(
'
ü
'
).
join
(
'
ue
'
);
return
'
focus_
'
+
name
;
}
/**
* Loads the focus object for the given id from local storage
*/
function
loadFocusById
(
id
)
{
return
JSON
.
parse
(
localStorage
.
getItem
(
id
));
}
/**
* Unchecks all focuses from the focus creator dialog
*/
function
uncheckAll
()
{
$
(
'
.focusCheckbox
'
).
prop
(
'
checked
'
,
false
);
}
/**
* Sets the selected focus to default
*/
function
setFocusToDefault
()
{
setFocus
(
DEFAULT_FOCUS
);
}
/**
* Sets the selected focus
* @param {String} focusID The id of the focus, without #
*/
function
setFocus
(
focusID
)
{
$
(
'
#focus-select option[value="
'
+
focusID
+
'
"]
'
).
prop
(
'
selected
'
,
true
);
$
(
'
#focus-select
'
).
change
();
}
function
focusChanged
()
{
var
selectedFocus
=
getCurrentFocus
();
if
(
focusIsEditable
(
selectedFocus
))
{
enableEditFocusBtn
();
}
else
{
disableEditFocusBtn
();
}
loadFocusForSearch
(
selectedFocus
);
}
function
focusIsEditable
(
focus
)
{
if
(
focus
.
startsWith
(
'
focus_
'
))
{
return
true
;
}
else
{
return
false
;
}
}
function
enableEditFocusBtn
()
{
$
(
'
#editFocusBtn
'
).
removeClass
(
'
disabled
'
).
click
(
editCurrentFocus
);
}
function
disableEditFocusBtn
()
{
$
(
'
#editFocusBtn
'
).
addClass
(
'
disabled
'
).
off
(
'
click
'
);
}
function
loadFocusForSearch
(
focus
)
{
var
focus
=
loadFocusById
(
focus
);
clearCustomSearch
();
for
(
var
key
in
focus
)
{
if
(
key
.
startsWith
(
'
engine_
'
)
&&
focus
[
key
]
==
'
on
'
)
{
addSumaToCustomSearch
(
key
);
}
}
}
function
clearCustomSearch
()
{
$
(
'
.search-custom-hidden
'
).
empty
();
}
function
addSumaToCustomSearch
(
sumaId
)
{
$
(
'
.search-custom-hidden
'
).
append
(
'
<input type="hidden" name="
'
+
sumaId
+
'
" value="on">
'
);
}
function
getFocusInUrl
()
{
var
url
=
window
.
location
;
var
focReg
=
/focus=
(
focus_
\w
+
)
/
.
exec
(
url
);
if
(
focReg
&&
focReg
[
1
])
{
return
focReg
[
1
];
}
}
function
toggleOptionsDialog
()
{
var
btnMode
=
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
);
if
(
btnMode
==
'
o
'
)
{
openOptionsDialog
();
}
else
{
closeOptionsDialog
();
}
}
function
openOptionsDialog
()
{
$
(
'
#toggleOptBtn
'
).
html
(
'
<i class="fa fa-chevron-up" aria-hidden="true"></i>
'
);
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
,
'
c
'
);
$
(
'
.search-option-frame
'
).
removeClass
(
'
hide
'
);
}
function
closeOptionsDialog
()
{
$
(
'
#toggleOptBtn
'
).
html
(
'
<i class="fa fa-chevron-down" aria-hidden="true"></i>
'
);
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
,
'
o
'
);
$
(
'
.search-option-frame
'
).
addClass
(
'
hide
'
);
}
function
checkboxCheckListener
(
event
)
{
toggleDeleteButton
();
var
elem
=
event
.
target
;
if
(
elem
.
name
)
{
if
(
elem
.
checked
)
{
setCheckedForAllWithName
(
elem
.
name
,
true
);
}
else
{
setCheckedForAllWithName
(
elem
.
name
,
false
);
}
}
}
function
setCheckedForAllWithName
(
name
,
checked
)
{
$
(
'
.focusCheckbox[name=
'
+
name
+
'
]
'
).
prop
(
'
checked
'
,
checked
);
}
//# sourceMappingURL=searchbar.js.map
resources/assets/js/focus-creator.js
0 → 100644
View file @
8d7736a2
$
(
function
()
{
setFocusCreatorActionListeners
();
loadInitialCustomFocuses
();
loadInitialSelectedFocus
();
focusChanged
();
});
/**
* Sets all action listeners for this page
*/
function
setFocusCreatorActionListeners
()
{
$
(
'
.focusCheckbox
'
).
click
(
checkboxCheckListener
);
$
(
'
#addFocusBtn
'
).
click
(()
=>
showFocusCreateDialog
(
''
));
$
(
'
#editFocusBtn
'
).
click
(
editCurrentFocus
);
$
(
'
#toggleOptBtn
'
).
click
(
toggleOptionsDialog
);
$
(
'
.save-focus-btn
'
).
click
(
saveFocus
);
$
(
'
.delete-focus-btn
'
).
click
(
deleteFocus
);
$
(
'
#focus-select
'
).
change
(
focusChanged
);
// Save Focus on clicking enter while in the focus name input
$
(
'
#focus-name
'
).
keyup
(
function
(
event
)
{
if
(
event
.
keyCode
==
13
)
{
saveFocus
();
}
});
$
(
'
#create-focus-modal
'
).
on
(
'
shown.bs.modal
'
,
function
()
{
$
(
'
#focus-name
'
).
focus
();
});
}
/**
* Loads all the custom focuses stored in local storage
*/
function
loadInitialCustomFocuses
()
{
for
(
var
key
in
localStorage
)
{
if
(
key
.
startsWith
(
'
focus_
'
))
{
var
focus
=
loadFocusById
(
key
);
addFocus
(
focus
.
name
);
}
}
}
function
loadInitialSelectedFocus
()
{
setFocus
(
getFocusInUrl
());
}
/**
* Shows the focus create dialog
* If an id is given it will try to load a focus for the given id
*/
function
showFocusCreateDialog
(
id
)
{
if
(
id
===
undefined
)
{
id
=
''
;
}
document
.
getElementById
(
'
original-id
'
).
value
=
id
;
$
(
'
#create-focus-modal
'
).
modal
(
'
show
'
);
var
storedFocus
=
loadFocusById
(
id
);
var
focus
=
{};
// Try to load a focus for the given id
$
(
'
#focus-name
'
).
val
(
''
);
uncheckAll
();
if
(
storedFocus
!==
null
)
{
try
{
focus
=
JSON
.
parse
(
localStorage
.
getItem
(
id
));
$
(
'
#focus-name
'
).
val
(
focus
.
name
);
for
(
var
key
in
focus
)
{
if
(
key
.
startsWith
(
'
engine_
'
))
{
$
(
'
.focusCheckbox[name=
'
+
key
+
'
]
'
).
prop
(
'
checked
'
,
true
);
}
}
}
catch
(
ex
)
{
console
.
error
(
ex
);
}
}
toggleDeleteButton
();
}
/**
* Shows the focus create dialog for a given id
*/
function
showFocusEditDialog
(
id
)
{
showFocusCreateDialog
(
id
);
}
function
getCurrentFocus
()
{
return
document
.
getElementById
(
'
focus-select
'
).
value
;
}
/**
* Shows an edit dialog for the current selected focus
*/
function
editCurrentFocus
()
{
var
currentFocus
=
getCurrentFocus
();
showFocusEditDialog
(
currentFocus
);
}
/**
* Shows/Hides the delete button if (no) checkboxes are selected
*/
function
toggleDeleteButton
()
{
if
(
atLeastOneChecked
())
{
$
(
'
.delete-focus-btn
'
).
show
();
}
else
{
$
(
'
.delete-focus-btn
'
).
hide
();
}
}
/**
* Save the current Focus
* Listens for save button
*/
function
saveFocus
()
{
/* Vorprüfungen */
// Falls keine Suchmaschine ausgewählt wurde
if
(
!
atLeastOneChecked
())
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
Please select at least 1 search engine.
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, seleccione al menos un motor de búsqueda.
'
);
break
;
default
:
alert
(
'
Bitte mindestens 1 Suchmaschine auswählen.
'
);
break
;
}
return
;
}
// Falls der Name zu kurz ist oder ungültige Zeichen enthält
var
name
=
document
.
getElementById
(
'
focus-name
'
).
value
;
if
(
!
isValidName
(
name
))
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
No characters other than a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed, at least 1 character
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, introduzca un nombre válido
'
);
break
;
default
:
alert
(
'
Bitte gültigen Namen eingeben:
\n
* Keine Sonderzeichen
\n
* Mindestens 1 Buchstabe
\n
'
);
break
;
}
return
;
}
// Liest die original-id des aktuellen fokus-dialogs (gesetzt wenn man einen Fokus bearbeitet)
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
var
id
=
getIdFromName
(
name
);
var
overwrite
=
true
;
// Wenn bereits ein Fokus mit dem Namen existiert, man diesen aber nicht editiert sondern gerade einen Neuen erstellt
if
(
alreadyInUse
(
name
)
&&
oldId
!==
id
)
{
// Fragt den Nutzer ob er den Fokus überschreiben möchte
if
(
!
confirm
(
'
Name bereits genutzt
\n
überschreiben?
'
))
{
// Falls nicht wird das Speichern abgebrochen
return
;
}
// Ansonsten wird der andere Fokus gelöscht
deleteFocusById
(
id
);
}
/* Fokus speichern */
var
focus
=
{};
// Ausgewählte Suchmaschinen lesen und zu Fokus hinzufügen
$
(
'
input[type=checkbox]:checked
'
).
each
(
function
(
el
)
{
focus
[
$
(
this
).
attr
(
'
name
'
)]
=
$
(
this
).
val
();
});
// Name setzen
focus
[
'
name
'
]
=
name
;
// Alte Version des Fokus löschen (aus localStorage und von der Webseite, falls eine existiert)
if
(
oldId
!==
''
)
{
localStorage
.
removeItem
(
oldId
);
removeFocusById
(
oldId
);
}
// Neue Version des Fokus hinzufügen (zu localStorage und der Webseite)
localStorage
.
setItem
(
id
,
JSON
.
stringify
(
focus
));
addFocus
(
name
);
setFocus
(
id
);
// Fokus-Formular verbergen
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocusById
(
id
)
{
localStorage
.
removeItem
(
id
);
removeFocusById
(
id
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocus
()
{
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
deleteFocusById
(
oldId
);
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Is the name valid (in terms of characters)?
*/
function
isValidName
(
name
)
{
// no Characters other then a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed
// at least 1 character