mirror of https://github.com/CIRCL/AIL-framework
galaxies synonyms
parent
f3f6b76428
commit
dbe67e094b
|
@ -58,7 +58,18 @@ def get_all_tags():
|
||||||
|
|
||||||
list_tags = []
|
list_tags = []
|
||||||
for tag in all_tags:
|
for tag in all_tags:
|
||||||
list_tags.append( tag )
|
t = tag.split(':')[0]
|
||||||
|
# add synonym
|
||||||
|
str_synonyms = ' - synonyms: '
|
||||||
|
if t == 'misp-galaxy':
|
||||||
|
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
|
||||||
|
for synonym in synonyms:
|
||||||
|
str_synonyms = str_synonyms + synonym + ', '
|
||||||
|
# add real tag
|
||||||
|
if str_synonyms != ' - synonyms: ':
|
||||||
|
list_tags.append({'name':tag + str_synonyms,'id':tag})
|
||||||
|
else:
|
||||||
|
list_tags.append({'name':tag,'id':tag})
|
||||||
|
|
||||||
return jsonify(list_tags)
|
return jsonify(list_tags)
|
||||||
|
|
||||||
|
@ -79,6 +90,28 @@ def get_all_tags_taxonomies():
|
||||||
|
|
||||||
return jsonify(list_tags)
|
return jsonify(list_tags)
|
||||||
|
|
||||||
|
@Tags.route("/Tags/get_all_tags_galaxies")
|
||||||
|
def get_all_tags_galaxy():
|
||||||
|
|
||||||
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
|
||||||
|
list_tags = []
|
||||||
|
for galaxy in active_galaxies:
|
||||||
|
l_tags = r_serv_tags.smembers('active_tag_galaxies_' + galaxy)
|
||||||
|
for tag in l_tags:
|
||||||
|
str_synonyms = ' - synonyms: '
|
||||||
|
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
|
||||||
|
# synonyms to display
|
||||||
|
for synonym in synonyms:
|
||||||
|
str_synonyms = str_synonyms + synonym + ', '
|
||||||
|
# add real tag
|
||||||
|
if str_synonyms != ' - synonyms: ':
|
||||||
|
list_tags.append({'name':tag + str_synonyms,'id':tag})
|
||||||
|
else:
|
||||||
|
list_tags.append({'name':tag,'id':tag})
|
||||||
|
|
||||||
|
return jsonify(list_tags)
|
||||||
|
|
||||||
@Tags.route("/Tags/get_tags_taxonomie")
|
@Tags.route("/Tags/get_tags_taxonomie")
|
||||||
def get_tags_taxonomie():
|
def get_tags_taxonomie():
|
||||||
|
|
||||||
|
@ -102,10 +135,38 @@ def get_tags_taxonomie():
|
||||||
return jsonify(list_tags)
|
return jsonify(list_tags)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return 'this taxinomie is disable'
|
return 'this taxonomie is disable'
|
||||||
else:
|
else:
|
||||||
return 'INCORRECT INPUT'
|
return 'INCORRECT INPUT'
|
||||||
|
|
||||||
|
@Tags.route("/Tags/get_tags_galaxy")
|
||||||
|
def get_tags_galaxy():
|
||||||
|
|
||||||
|
galaxy = request.args.get('galaxy')
|
||||||
|
|
||||||
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
|
||||||
|
#verify input
|
||||||
|
if galaxy in active_galaxies:
|
||||||
|
|
||||||
|
list_tags = []
|
||||||
|
l_tags = r_serv_tags.smembers('active_tag_galaxies_' + galaxy)
|
||||||
|
for tag in l_tags:
|
||||||
|
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
|
||||||
|
str_synonyms = ' - synonyms: '
|
||||||
|
for synonym in synonyms:
|
||||||
|
str_synonyms = str_synonyms + synonym + ', '
|
||||||
|
# add real tag
|
||||||
|
if str_synonyms != ' - synonyms: ':
|
||||||
|
list_tags.append({'name':tag + str_synonyms,'id':tag})
|
||||||
|
else:
|
||||||
|
list_tags.append({'name':tag,'id':tag})
|
||||||
|
|
||||||
|
return jsonify(list_tags)
|
||||||
|
|
||||||
|
else:
|
||||||
|
return 'this galaxy is disable'
|
||||||
|
|
||||||
|
|
||||||
@Tags.route("/Tags/get_tagged_paste")
|
@Tags.route("/Tags/get_tagged_paste")
|
||||||
def get_tagged_paste():
|
def get_tagged_paste():
|
||||||
|
@ -140,7 +201,6 @@ def get_tagged_paste():
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
all_content = []
|
all_content = []
|
||||||
paste_date = []
|
paste_date = []
|
||||||
|
@ -209,6 +269,9 @@ def remove_tag():
|
||||||
r_serv_metadata.srem('tag:'+path, tag)
|
r_serv_metadata.srem('tag:'+path, tag)
|
||||||
r_serv_tags.srem(tag, path)
|
r_serv_tags.srem(tag, path)
|
||||||
|
|
||||||
|
if r_serv_tags.scard(tag) == 0:
|
||||||
|
r_serv_tags.srem('list_tags', tag)
|
||||||
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||||
|
|
||||||
@Tags.route("/Tags/confirm_tag")
|
@Tags.route("/Tags/confirm_tag")
|
||||||
|
@ -239,80 +302,60 @@ def confirm_tag():
|
||||||
def addTags():
|
def addTags():
|
||||||
|
|
||||||
tags = request.args.get('tags')
|
tags = request.args.get('tags')
|
||||||
|
tagsgalaxies = request.args.get('tagsgalaxies')
|
||||||
path = request.args.get('path')
|
path = request.args.get('path')
|
||||||
|
|
||||||
list_tag = tags.split(',')
|
list_tag = tags.split(',')
|
||||||
|
list_tag_galaxies = tagsgalaxies.split(',')
|
||||||
|
|
||||||
taxonomies = Taxonomies()
|
taxonomies = Taxonomies()
|
||||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||||
|
|
||||||
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
|
||||||
if not path:
|
if not path:
|
||||||
return 'INCORRECT INPUT'
|
return 'INCORRECT INPUT0'
|
||||||
|
|
||||||
for tag in list_tag:
|
if list_tag != ['']:
|
||||||
# verify input
|
for tag in list_tag:
|
||||||
tax = tag.split(':')[0]
|
# verify input
|
||||||
if tax in active_taxonomies:
|
tax = tag.split(':')[0]
|
||||||
if tag in r_serv_tags.smembers('active_tag_' + tax):
|
if tax in active_taxonomies:
|
||||||
|
if tag in r_serv_tags.smembers('active_tag_' + tax):
|
||||||
|
|
||||||
#add tag
|
#add tag
|
||||||
r_serv_metadata.sadd('tag:'+path, tag)
|
r_serv_metadata.sadd('tag:'+path, tag)
|
||||||
r_serv_tags.sadd(tag, path)
|
r_serv_tags.sadd(tag, path)
|
||||||
#add new tag in list of all used tags
|
#add new tag in list of all used tags
|
||||||
r_serv_tags.sadd('list_tags', tag)
|
r_serv_tags.sadd('list_tags', tag)
|
||||||
|
|
||||||
|
else:
|
||||||
|
return 'INCORRECT INPUT1'
|
||||||
else:
|
else:
|
||||||
return 'INCORRECT INPUT'
|
return 'INCORRECT INPUT2'
|
||||||
else:
|
|
||||||
return 'INCORRECT INPUT'
|
|
||||||
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
if list_tag_galaxies != ['']:
|
||||||
|
for tag in list_tag_galaxies:
|
||||||
|
# verify input
|
||||||
|
gal = tag.split(':')[1]
|
||||||
|
gal = gal.split('=')[0]
|
||||||
|
print(tag)
|
||||||
|
print(gal)
|
||||||
|
print(active_galaxies)
|
||||||
|
if gal in active_galaxies:
|
||||||
|
if tag in r_serv_tags.smembers('active_tag_galaxies_' + gal):
|
||||||
|
|
||||||
@Tags.route("/Tags/thumbs_up_paste")
|
print('adding ...')
|
||||||
def thumbs_up_paste():
|
#add tag
|
||||||
|
r_serv_metadata.sadd('tag:'+path, tag)
|
||||||
|
r_serv_tags.sadd(tag, path)
|
||||||
|
#add new tag in list of all used tags
|
||||||
|
r_serv_tags.sadd('list_tags', tag)
|
||||||
|
|
||||||
#TODO verify input
|
else:
|
||||||
path = request.args.get('paste')
|
return 'INCORRECT INPUT3'
|
||||||
|
else:
|
||||||
'''positive_t = 'infoleak:confirmed="true-positive"'
|
return 'INCORRECT INPUT4'
|
||||||
positive_f = 'infoleak:confirmed="false-positive"'
|
|
||||||
|
|
||||||
negative_t = 'infoleak:confirmed="true-negative"'
|
|
||||||
|
|
||||||
list_tags = r_serv_metadata.smembers('tag:'+path)
|
|
||||||
|
|
||||||
if(list_tags > 0):
|
|
||||||
|
|
||||||
if positive_f in list_tags:
|
|
||||||
r_serv_metadata.srem('tag:'+path, positive_f)
|
|
||||||
r_serv_metadata.sadd('tag:'+path, positive_t)
|
|
||||||
|
|
||||||
r_serv_tags.srem(positive_f, path)
|
|
||||||
r_serv_tags.sadd(positive_t, path)
|
|
||||||
#add new tag in list of all used tags
|
|
||||||
r_serv_tags.sadd('list_tags', positive_t)
|
|
||||||
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if positive_t in list_tags:
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
|
||||||
else:
|
|
||||||
r_serv_metadata.sadd('tag:'+path, negative_t)
|
|
||||||
r_serv_tags.sadd(negative_t, path)
|
|
||||||
#add new tag in list of all used tags
|
|
||||||
r_serv_tags.sadd('list_tags', negative_t)'''
|
|
||||||
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
|
||||||
|
|
||||||
@Tags.route("/Tags/thumbs_down_paste")
|
|
||||||
def thumbs_down_paste():
|
|
||||||
|
|
||||||
#TODO verify input
|
|
||||||
path = request.args.get('paste')
|
|
||||||
|
|
||||||
'''list_tags = r_serv_metadata.smembers('tag:'+path)'''
|
|
||||||
|
|
||||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||||
|
|
||||||
|
@ -397,10 +440,6 @@ def edit_taxonomie():
|
||||||
else:
|
else:
|
||||||
return 'INVALID TAXONOMIE'
|
return 'INVALID TAXONOMIE'
|
||||||
|
|
||||||
@Tags.route("/Tags/test")
|
|
||||||
def test():
|
|
||||||
return 'test',
|
|
||||||
|
|
||||||
@Tags.route("/Tags/disable_taxonomie")
|
@Tags.route("/Tags/disable_taxonomie")
|
||||||
def disable_taxonomie():
|
def disable_taxonomie():
|
||||||
|
|
||||||
|
@ -615,6 +654,32 @@ def active_galaxy():
|
||||||
for tag in l_tags:
|
for tag in l_tags:
|
||||||
r_serv_tags.sadd('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag))
|
r_serv_tags.sadd('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag))
|
||||||
|
|
||||||
|
#save synonyms
|
||||||
|
for clusters_json in list_clusters:
|
||||||
|
|
||||||
|
#get clusters
|
||||||
|
cluster = json.loads(clusters_json)
|
||||||
|
|
||||||
|
if cluster['type'] == id:
|
||||||
|
|
||||||
|
val = cluster['values']
|
||||||
|
|
||||||
|
tags = []
|
||||||
|
for data in val:
|
||||||
|
try:
|
||||||
|
meta = data['meta']
|
||||||
|
synonyms = meta['synonyms']
|
||||||
|
tag_name = data['value']
|
||||||
|
tag_name = 'misp-galaxy:{}="{}"'.format(id, tag_name)
|
||||||
|
#save synonyms
|
||||||
|
for synonym in synonyms:
|
||||||
|
r_serv_tags.sadd('synonym_tag_' + tag_name, synonym)
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
return redirect(url_for('Tags.galaxies'))
|
return redirect(url_for('Tags.galaxies'))
|
||||||
|
|
||||||
|
|
||||||
|
@ -631,7 +696,9 @@ def disable_galaxy():
|
||||||
|
|
||||||
r_serv_tags.srem('active_galaxies', id)
|
r_serv_tags.srem('active_galaxies', id)
|
||||||
for tag in l_tags:
|
for tag in l_tags:
|
||||||
r_serv_tags.srem('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag))
|
tag_name = 'misp-galaxy:{}="{}"'.format(id, tag)
|
||||||
|
r_serv_tags.srem('active_tag_galaxies_' + id, tag_name)
|
||||||
|
r_serv_tags.delete('synonym_tag_' + tag_name)
|
||||||
|
|
||||||
return redirect(url_for('Tags.galaxies'))
|
return redirect(url_for('Tags.galaxies'))
|
||||||
|
|
||||||
|
@ -666,6 +733,7 @@ def edit_galaxy_tag():
|
||||||
#remove tags
|
#remove tags
|
||||||
for tag in diff:
|
for tag in diff:
|
||||||
r_serv_tags.srem('active_tag_galaxies_' + id, tag)
|
r_serv_tags.srem('active_tag_galaxies_' + id, tag)
|
||||||
|
r_serv_tags.delete('synonym_tag_' + tag)
|
||||||
|
|
||||||
#all tags unchecked
|
#all tags unchecked
|
||||||
if len(arg1) == 0 and len(arg2) == 0:
|
if len(arg1) == 0 and len(arg2) == 0:
|
||||||
|
@ -676,10 +744,42 @@ def edit_galaxy_tag():
|
||||||
r_serv_tags.sadd('active_galaxies', id)
|
r_serv_tags.sadd('active_galaxies', id)
|
||||||
r_serv_tags.sadd('active_tag_galaxies_' + id, tag)
|
r_serv_tags.sadd('active_tag_galaxies_' + id, tag)
|
||||||
|
|
||||||
|
#get tags synonyms
|
||||||
|
for clusters_json in list_clusters:
|
||||||
|
|
||||||
|
#get clusters
|
||||||
|
cluster = json.loads(clusters_json)
|
||||||
|
|
||||||
|
if cluster['type'] == id:
|
||||||
|
|
||||||
|
val = cluster['values']
|
||||||
|
|
||||||
|
tags = []
|
||||||
|
for data in val:
|
||||||
|
try:
|
||||||
|
meta = data['meta']
|
||||||
|
synonyms = meta['synonyms']
|
||||||
|
tag_name = data['value']
|
||||||
|
tag_name = 'misp-galaxy:{}="{}"'.format(id, tag_name)
|
||||||
|
if tag_name in arg2:
|
||||||
|
#save synonyms
|
||||||
|
for synonym in synonyms:
|
||||||
|
r_serv_tags.sadd('synonym_tag_' + tag_name, synonym)
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
break
|
||||||
|
|
||||||
return redirect(url_for('Tags.galaxies'))
|
return redirect(url_for('Tags.galaxies'))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return "INCORRECT INPUT"
|
return "INCORRECT INPUT"
|
||||||
|
|
||||||
|
@Tags.route("/Tags/test")
|
||||||
|
def test():
|
||||||
|
|
||||||
|
return render_template("test.html",
|
||||||
|
id = '1')
|
||||||
|
|
||||||
# ========= REGISTRATION =========
|
# ========= REGISTRATION =========
|
||||||
app.register_blueprint(Tags)
|
app.register_blueprint(Tags)
|
||||||
|
|
|
@ -38,20 +38,31 @@
|
||||||
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
||||||
|
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
|
<button type="button" class="btn btn-search btn-primary btn-tags" onclick="searchTags()"<button class="btn btn-primary" onclick="emptyTags()">
|
||||||
<span class="glyphicon glyphicon-search"></span>
|
<span class="glyphicon glyphicon-search "></span>
|
||||||
<span class="label-icon">Search</span>
|
<span class="label-icon">Search Tags</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel">
|
<button class="btn btn-primary" onclick="emptyTags()" style="margin-bottom: 30px;">
|
||||||
<span class="glyphicon glyphicon-cog "></span> Advanced Search
|
<span class="glyphicon glyphicon-remove"></span>
|
||||||
|
<span class="label-icon">Clear Tags</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a>
|
<br></br>
|
||||||
|
<a class="btn btn-tags" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
|
||||||
|
<i class="fa fa-wrench fa-2x"></i>
|
||||||
|
<br></br>
|
||||||
|
<span class="label-icon">Edit Taxonomies List </span>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-tags" href="{{ url_for('Tags.galaxies') }}" target="_blank">
|
||||||
|
<i class="fa fa-rocket fa-2x"></i>
|
||||||
|
<br></br>
|
||||||
|
<span class="label-icon">Edit Galaxies List</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -79,9 +90,12 @@
|
||||||
<script>
|
<script>
|
||||||
function searchTags() {
|
function searchTags() {
|
||||||
var data = ltags.getValue();
|
var data = ltags.getValue();
|
||||||
console.log(data);
|
|
||||||
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
||||||
}
|
}
|
||||||
|
function emptyTags() {
|
||||||
|
console.log('b');
|
||||||
|
ltags.clear();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
|
|
||||||
|
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-primary btn-lg">
|
<button class="btn btn-primary btn-lg" onclick="submitActiveTags()">
|
||||||
<i class="fa fa-check-square-o fa"></i>
|
<i class="fa fa-check-square-o fa"></i>
|
||||||
Update Tags
|
Update Tags
|
||||||
</button>
|
</button>
|
||||||
|
@ -142,13 +142,14 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
var table
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$('#myTable_').DataTable(
|
table = $('#myTable_').DataTable(
|
||||||
{
|
{
|
||||||
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
||||||
"iDisplayLength": 10,
|
"iDisplayLength": 10,
|
||||||
//"order": [[ 1, "asc" ]]
|
"order": [[ 3, "desc" ]]
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -157,7 +158,12 @@ $(document).ready(function(){
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function submitActiveTags(){
|
function submitActiveTags(){
|
||||||
document.getElementById("checkboxForm").submit();
|
table.destroy()
|
||||||
|
table = $('#myTable_').DataTable(
|
||||||
|
{
|
||||||
|
"iDisplayLength": -1,
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
|
|
||||||
|
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-primary btn-lg">
|
<button class="btn btn-primary btn-lg" onclick="submitActiveTags()">
|
||||||
<i class="fa fa-check-square-o fa"></i>
|
<i class="fa fa-check-square-o fa"></i>
|
||||||
Update Tags
|
Update Tags
|
||||||
</button>
|
</button>
|
||||||
|
@ -142,20 +142,14 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
var table
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
/*$('[data-toggle="tooltip"]').tooltip();
|
|
||||||
$("[data-toggle='modal']").off('click.openmodal').on("click.openmodal", function (event) {
|
|
||||||
//get_html_and_update_modal(event);
|
|
||||||
get_html_and_update_modal(event, $(this));
|
|
||||||
});
|
|
||||||
|
|
||||||
search_table = $('#myTable_').DataTable({ "order": [[ 2, "desc" ]] });*/
|
table = $('#myTable_').DataTable(
|
||||||
|
|
||||||
$('#myTable_').DataTable(
|
|
||||||
{
|
{
|
||||||
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
||||||
"iDisplayLength": 10,
|
"iDisplayLength": 10,
|
||||||
//"order": [[ 1, "asc" ]]
|
"order": [[ 3, "desc" ]]
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -164,7 +158,12 @@ $(document).ready(function(){
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function submitActiveTags(){
|
function submitActiveTags(){
|
||||||
document.getElementById("checkboxForm").submit();
|
table.destroy()
|
||||||
|
table = $('#myTable_').DataTable(
|
||||||
|
{
|
||||||
|
"iDisplayLength": -1,
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -74,17 +74,18 @@
|
||||||
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
||||||
|
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
|
<button type="button" class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
|
||||||
<span class="glyphicon glyphicon-search"></span>
|
<span class="glyphicon glyphicon-search "></span>
|
||||||
<span class="label-icon">Search</span>
|
<span class="label-icon">Search Tags</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel">
|
<button class="btn btn-primary" onclick="emptyTags()" style="margin-bottom: 30px;">
|
||||||
<span class="glyphicon glyphicon-cog "></span> Advanced Search
|
<span class="glyphicon glyphicon-remove"></span>
|
||||||
</button>
|
<span class="label-icon">Clear Tags</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
<table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_">
|
<table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -105,7 +106,7 @@
|
||||||
<div>
|
<div>
|
||||||
{% for tag in paste_tags[loop.index0] %}
|
{% for tag in paste_tags[loop.index0] %}
|
||||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
<span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -129,7 +130,19 @@
|
||||||
<img id="loading_gif_browse" src="/static//image/loading.gif" heigt="20" width="20" style="margin: 2px;"></div>
|
<img id="loading_gif_browse" src="/static//image/loading.gif" heigt="20" width="20" style="margin: 2px;"></div>
|
||||||
</br>
|
</br>
|
||||||
|
|
||||||
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a>
|
<div>
|
||||||
|
<br></br>
|
||||||
|
<a class="btn btn-tags" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
|
||||||
|
<i class="fa fa-wrench fa-2x"></i>
|
||||||
|
<br></br>
|
||||||
|
<span class="label-icon">Edit Taxonomies List </span>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-tags" href="{{ url_for('Tags.galaxies') }}" target="_blank">
|
||||||
|
<i class="fa fa-rocket fa-2x"></i>
|
||||||
|
<br></br>
|
||||||
|
<span class="label-icon">Edit Galaxies List</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -186,6 +199,10 @@ $(document).ready(function(){
|
||||||
var data = ltags.getValue();
|
var data = ltags.getValue();
|
||||||
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
||||||
}
|
}
|
||||||
|
function emptyTags() {
|
||||||
|
console.log('b');
|
||||||
|
ltags.clear();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Dynamically update the modal -->
|
<!-- Dynamically update the modal -->
|
||||||
|
|
|
@ -64,7 +64,6 @@ def event_stream_getImportantPasteByModule(module_name, year):
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
for path in all_pastes_list:
|
for path in all_pastes_list:
|
||||||
index += 1
|
index += 1
|
||||||
|
@ -135,7 +134,6 @@ def importantPasteByModule():
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
for path in allPastes[0:10]:
|
for path in allPastes[0:10]:
|
||||||
all_path.append(path)
|
all_path.append(path)
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<div>
|
<div>
|
||||||
{% for tag in paste_tags[loop.index0] %}
|
{% for tag in paste_tags[loop.index0] %}
|
||||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
<span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -101,7 +101,7 @@ function add_entries_X(to_add) {
|
||||||
for(j=0; j<feed.l_tags.length; j++) {
|
for(j=0; j<feed.l_tags.length; j++) {
|
||||||
console.log(feed.l_tags[j][1])
|
console.log(feed.l_tags[j][1])
|
||||||
tag = tag + "<a href=\"{{ url_for('Tags.get_tagged_paste') }}?ltags=" + feed.l_tags[j][1] + "\">"
|
tag = tag + "<a href=\"{{ url_for('Tags.get_tagged_paste') }}?ltags=" + feed.l_tags[j][1] + "\">"
|
||||||
+ "<span class=\"label label-" + feed.bootstrap_label[j % 6] + " pull-left\">" + feed.l_tags[j][0] + "</span>" + "</a>";
|
+ "<span class=\"label label-" + feed.bootstrap_label[j % 5] + " pull-left\">" + feed.l_tags[j][0] + "</span>" + "</a>";
|
||||||
}
|
}
|
||||||
search_table.row.add( [
|
search_table.row.add( [
|
||||||
feed.index,
|
feed.index,
|
||||||
|
|
|
@ -164,7 +164,6 @@ def search():
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
index_min = 1
|
index_min = 1
|
||||||
index_max = len(get_index_list())
|
index_max = len(get_index_list())
|
||||||
|
@ -205,7 +204,6 @@ def get_more_search_result():
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)
|
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@
|
||||||
<div>
|
<div>
|
||||||
{% for tag in paste_tags[loop.index0] %}
|
{% for tag in paste_tags[loop.index0] %}
|
||||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
<span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -200,7 +200,7 @@
|
||||||
var curr_preview = data.preview_array[i].replace(/\"/g, "\'");
|
var curr_preview = data.preview_array[i].replace(/\"/g, "\'");
|
||||||
var tag = ""
|
var tag = ""
|
||||||
for(j=0; j<data.list_tags[i].length; j++) {
|
for(j=0; j<data.list_tags[i].length; j++) {
|
||||||
tag = tag + "<span class=\"label label-" + data.bootstrap_label[j % 6] + " pull-left\">" + data.list_tags[j] + "</span>"
|
tag = tag + "<span class=\"label label-" + data.bootstrap_label[j % 5] + " pull-left\">" + data.list_tags[j] + "</span>"
|
||||||
}
|
}
|
||||||
search_table.row.add( [
|
search_table.row.add( [
|
||||||
init_num_of_elements_in_table+((offset))+i+1,
|
init_num_of_elements_in_table+((offset))+i+1,
|
||||||
|
|
|
@ -104,13 +104,15 @@ def showpaste(content_range):
|
||||||
bootstrap_label.append('danger')
|
bootstrap_label.append('danger')
|
||||||
bootstrap_label.append('warning')
|
bootstrap_label.append('warning')
|
||||||
bootstrap_label.append('info')
|
bootstrap_label.append('info')
|
||||||
bootstrap_label.append('dark')
|
|
||||||
|
|
||||||
#active taxonomies
|
#active taxonomies
|
||||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||||
|
|
||||||
l_tags = r_serv_metadata.smembers('tag:'+requested_path)
|
l_tags = r_serv_metadata.smembers('tag:'+requested_path)
|
||||||
|
|
||||||
|
#active galaxies
|
||||||
|
active_galaxies = r_serv_tags.smembers('active_galaxies')
|
||||||
|
|
||||||
list_tags = []
|
list_tags = []
|
||||||
|
|
||||||
for tag in l_tags:
|
for tag in l_tags:
|
||||||
|
@ -119,7 +121,7 @@ def showpaste(content_range):
|
||||||
else:
|
else:
|
||||||
list_tags.append( (tag, False) )
|
list_tags.append( (tag, False) )
|
||||||
|
|
||||||
return render_template("show_saved_paste.html", date=p_date, bootstrap_label=bootstrap_label, active_taxonomies=active_taxonomies, list_tags=list_tags, source=p_source, encoding=p_encoding, language=p_language, size=p_size, mime=p_mime, lineinfo=p_lineinfo, content=p_content, initsize=len(p_content), duplicate_list = p_duplicate_list, simil_list = p_simil_list, hashtype_list = p_hashtype_list, date_list=p_date_list)
|
return render_template("show_saved_paste.html", date=p_date, bootstrap_label=bootstrap_label, active_taxonomies=active_taxonomies, active_galaxies=active_galaxies, list_tags=list_tags, source=p_source, encoding=p_encoding, language=p_language, size=p_size, mime=p_mime, lineinfo=p_lineinfo, content=p_content, initsize=len(p_content), duplicate_list = p_duplicate_list, simil_list = p_simil_list, hashtype_list = p_hashtype_list, date_list=p_date_list)
|
||||||
|
|
||||||
# ============ ROUTES ============
|
# ============ ROUTES ============
|
||||||
|
|
||||||
|
|
|
@ -49,26 +49,51 @@
|
||||||
|
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
|
||||||
<div class="form-group input-group" >
|
<div class="form-group input-group" >
|
||||||
<input id="ltags" style="width:850%;" type="text" name="ltags">
|
<input id="ltags" style="width:850%;" type="text" name="ltags">
|
||||||
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="btn-group btn-block">
|
<div class="btn-group btn-block">
|
||||||
<button type="button" class="btn btn-primary dropdown-toggle btn-block" data-toggle="dropdown">Taxonomie Selection
|
<button type="button" class="btn btn-primary dropdown-toggle btn-block" data-toggle="dropdown">Taxonomie Selection
|
||||||
<i class="fa fa-chevron-down"></i>
|
<i class="fa fa-chevron-down"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu scrollable-menu" role="menu">
|
<ul class="dropdown-menu scrollable-menu" role="menu">
|
||||||
<li><a href="#" id="all-tags">All Tags <i class="fa fa-tags"></i></a></li>
|
<li><a href="#" id="all-tags-taxonomies">All Tags <i class="fa fa-tags"></i></a></li>
|
||||||
<li role="separator" class="divider"></li>
|
<li role="separator" class="divider"></li>
|
||||||
{% for taxo in active_taxonomies %}
|
{% for taxo in active_taxonomies %}
|
||||||
<li><a href="#" id="{{ taxo }}-id{{ loop.index0 }}">{{ taxo }}</a></li>
|
<li><a href="#" id="{{ taxo }}-id{{ loop.index0 }}">{{ taxo }}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<br/><br/>
|
||||||
|
|
||||||
|
<div class="form-group input-group" >
|
||||||
|
<input id="ltagsgalaxies" style="width:850%;" type="text" name="ltagsgalaxies">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="btn-group btn-block">
|
||||||
|
<button type="button" class="btn btn-primary dropdown-toggle btn-block" data-toggle="dropdown">Galaxy Selection
|
||||||
|
<i class="fa fa-chevron-down"></i>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu scrollable-menu" role="menu">
|
||||||
|
<li><a href="#" id="all-tags-galaxies">All Tags <i class="fa fa-tags"></i></a></li>
|
||||||
|
<li role="separator" class="divider"></li>
|
||||||
|
{% for galaxy in active_galaxies %}
|
||||||
|
<li><a href="#" id="{{ galaxy }}-idgalax{{ loop.index0 }}">{{ galaxy }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
<a class="btn btn-tags pull-left" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
|
||||||
|
<span class="label-icon">Edit Taxonomies List </span>
|
||||||
|
<i class="fa fa-wrench fa-2x"></i>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-tags pull-left" href="{{ url_for('Tags.galaxies') }}" target="_blank">
|
||||||
|
<span class="label-icon">Edit Galaxies List</span>
|
||||||
|
<i class="fa fa-rocket fa-2x"></i>
|
||||||
|
</a>
|
||||||
<button class="btn btn-primary btn-tags" onclick="addTags()">
|
<button class="btn btn-primary btn-tags" onclick="addTags()">
|
||||||
<span class="glyphicon glyphicon-plus"></span>
|
<span class="glyphicon glyphicon-plus"></span>
|
||||||
<span class="label-icon">Add Tags</span>
|
<span class="label-icon">Add Tags</span>
|
||||||
|
@ -82,7 +107,7 @@
|
||||||
|
|
||||||
|
|
||||||
{% for tag in list_tags %}
|
{% for tag in list_tags %}
|
||||||
<span class="btn btn-{{ bootstrap_label[loop.index0 % 6] }} btn-lg pull-left" data-toggle="modal" data-target="#myModal_{{ loop.index0 }}">{{ tag[0] }}</span>
|
<span class="btn btn-{{ bootstrap_label[loop.index0 % 5] }} btn-lg pull-left" data-toggle="modal" data-target="#myModal_{{ loop.index0 }}">{{ tag[0] }}</span>
|
||||||
|
|
||||||
<!-- Modal edit this tag -->
|
<!-- Modal edit this tag -->
|
||||||
<div class="modal fade" id="myModal_{{ loop.index0 }}" role="dialog">
|
<div class="modal fade" id="myModal_{{ loop.index0 }}" role="dialog">
|
||||||
|
@ -94,7 +119,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }}" >{{ tag[0] }}</span>
|
<span class="label label-{{ bootstrap_label[loop.index0 % 5] }}" >{{ tag[0] }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer center">
|
<div class="modal-footer center">
|
||||||
{% if tag[1] %}
|
{% if tag[1] %}
|
||||||
|
@ -145,12 +170,6 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<a href="{{ url_for('Tags.thumbs_up_paste') }}?paste={{ request.args.get('paste') }}" class="btn btn-success btn-lg" data-toggle="tooltip" title="Good Detection">
|
|
||||||
<span class="glyphicon glyphicon-thumbs-up "></span>
|
|
||||||
</a>
|
|
||||||
<a href="{{ url_for('Tags.thumbs_down_paste') }}?paste={{ request.args.get('paste') }}" class="btn btn-danger btn-lg" data-toggle="tooltip" title="Bad Detection">
|
|
||||||
<span class="glyphicon glyphicon-thumbs-down "></span>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body" id="panel-body">
|
<div class="panel-body" id="panel-body">
|
||||||
{% if duplicate_list|length == 0 %}
|
{% if duplicate_list|length == 0 %}
|
||||||
|
@ -191,6 +210,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var ltags
|
var ltags
|
||||||
|
var ltagsgalaxies
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$.getJSON('/Tags/get_all_tags_taxonomies',
|
$.getJSON('/Tags/get_all_tags_taxonomies',
|
||||||
|
@ -201,15 +221,26 @@
|
||||||
//sortOrder: 'name',
|
//sortOrder: 'name',
|
||||||
maxDropHeight: 200,
|
maxDropHeight: 200,
|
||||||
name: 'ltags'
|
name: 'ltags'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$.getJSON('/Tags/get_all_tags_galaxies',
|
||||||
|
function(data) {
|
||||||
|
|
||||||
|
ltagsgalaxies = $('#ltagsgalaxies').tagSuggest({
|
||||||
|
data: data,
|
||||||
|
//sortOrder: 'name',
|
||||||
|
maxDropHeight: 200,
|
||||||
|
name: 'ltagsgalaxies'
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
$('#tableDup').DataTable();
|
$('#tableDup').DataTable();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
jQuery("#all-tags").click(function(e){
|
jQuery("#all-tags-taxonomies").click(function(e){
|
||||||
//change input tags list /Tags/get_tags_taxonomie?taxonomie=infoleak
|
//change input tags list /Tags/get_tags_taxonomie?taxonomie=infoleak
|
||||||
$.getJSON('/Tags/get_all_tags_taxonomies',
|
$.getJSON('/Tags/get_all_tags_taxonomies',
|
||||||
function(data) {
|
function(data) {
|
||||||
|
@ -217,14 +248,25 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
jQuery("#all-tags-galaxies").click(function(e){
|
||||||
|
$.getJSON('/Tags/get_all_tags_galaxies',
|
||||||
|
function(data) {
|
||||||
|
ltagsgalaxies.setData(data)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function addTags() {
|
function addTags() {
|
||||||
var data = ltags.getValue()
|
var tags = ltags.getValue()
|
||||||
|
var tagsgalaxy = ltagsgalaxies.getValue()
|
||||||
var path = '{{ request.args.get('paste') }}'
|
var path = '{{ request.args.get('paste') }}'
|
||||||
window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + data + "&path=" + path);
|
window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&path=" + path);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -237,5 +279,16 @@
|
||||||
});
|
});
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</script>
|
</script>
|
||||||
|
<script>
|
||||||
|
{% for galaxy in active_galaxies %}
|
||||||
|
jQuery("#{{ galaxy }}-idgalax{{ loop.index0 }}").click(function(e){
|
||||||
|
$.getJSON('/Tags/get_tags_galaxy?galaxy={{ galaxy }}',
|
||||||
|
function(data) {
|
||||||
|
ltagsgalaxies.setData(data)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
{% endfor %}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
* Defaults to <code>'Type or click here'</code> or just <code>'Click here'</code> if not editable.
|
* Defaults to <code>'Type or click here'</code> or just <code>'Click here'</code> if not editable.
|
||||||
*/
|
*/
|
||||||
emptyText: function() {
|
emptyText: function() {
|
||||||
return cfg.editable ? '' : '';
|
return cfg.editable ? 'Select Tags' : '';
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
* Defaults to <code>false</code>.
|
* Defaults to <code>false</code>.
|
||||||
*/
|
*/
|
||||||
expandOnFocus: function() {
|
expandOnFocus: function() {
|
||||||
return cfg.editable ? false : true;
|
return cfg.editable ? true : true;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue