From ed992b3b28c7f6d9d637e82e88305b665733a50b Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Nov 2015 21:03:30 -0500 Subject: [PATCH 01/35] A large assortment of escaping fixes to primarily grids and javascript templating, and one bad-data-ingress fix (copy history name). --- .../mvc/collection/list-collection-creator.js | 6 +++--- .../list-of-pairs-collection-creator.js | 6 +++--- .../mvc/collection/pair-collection-creator.js | 10 +++++----- .../scripts/mvc/dataset/dataset-choice.js | 14 +++++++------- .../scripts/mvc/dataset/dataset-li-edit.js | 14 +++++++------- .../galaxy/scripts/mvc/dataset/dataset-li.js | 2 +- .../scripts/mvc/history/history-panel.js | 4 ++-- .../galaxy/scripts/mvc/history/multi-panel.js | 8 ++++---- client/galaxy/scripts/mvc/job/job-li.js | 18 +++++++++--------- client/galaxy/scripts/mvc/list/list-panel.js | 8 ++++---- .../galaxy/scripts/mvc/ui/ui-select-default.js | 2 +- .../scripts/mvc/groups/group-detail-view.js | 12 ++++++------ .../scripts/mvc/groups/group-listrow-view.js | 2 +- lib/galaxy/webapps/galaxy/controllers/admin.py | 14 +++++++------- .../webapps/galaxy/controllers/dataset.py | 4 ++-- .../galaxy/controllers/external_service.py | 5 ++++- lib/galaxy/webapps/galaxy/controllers/forms.py | 7 +++++-- .../webapps/galaxy/controllers/history.py | 4 ++-- .../webapps/galaxy/controllers/library.py | 4 ++-- .../galaxy/controllers/library_admin.py | 4 ++-- .../webapps/galaxy/controllers/request_type.py | 12 ++++++++---- .../galaxy/controllers/requests_admin.py | 8 +++++--- .../galaxy/controllers/requests_common.py | 7 +++++-- .../galaxy/controllers/visualization.py | 2 +- lib/galaxy/webapps/reports/controllers/jobs.py | 5 ++++- .../reports/controllers/sample_tracking.py | 7 +++++-- .../webapps/reports/controllers/workflows.py | 6 ++++-- lib/tool_shed/grids/admin_grids.py | 13 ++++++++----- lib/tool_shed/grids/repository_grids.py | 6 +++--- lib/tool_shed/grids/repository_review_grids.py | 12 ++++++++---- static/maps/mvc/history/multi-panel.js.map | 2 +- static/maps/mvc/ui/ui-select-default.js.map | 2 +- static/scripts/libs/jquery/jquery.dynatree.js | 2 +- .../mvc/collection/list-collection-creator.js | 2 +- .../list-of-pairs-collection-creator.js | 2 +- .../mvc/collection/pair-collection-creator.js | 2 +- static/scripts/mvc/dataset/dataset-choice.js | 2 +- static/scripts/mvc/dataset/dataset-li-edit.js | 2 +- static/scripts/mvc/dataset/dataset-li.js | 2 +- static/scripts/mvc/history/history-panel.js | 2 +- static/scripts/mvc/history/multi-panel.js | 2 +- static/scripts/mvc/job/job-li.js | 2 +- static/scripts/mvc/list/list-panel.js | 2 +- static/scripts/mvc/ui/ui-select-default.js | 2 +- 44 files changed, 142 insertions(+), 112 deletions(-) diff --git a/client/galaxy/scripts/mvc/collection/list-collection-creator.js b/client/galaxy/scripts/mvc/collection/list-collection-creator.js index 48f849bb83c..f7dfbe6467a 100644 --- a/client/galaxy/scripts/mvc/collection/list-collection-creator.js +++ b/client/galaxy/scripts/mvc/collection/list-collection-creator.js @@ -43,7 +43,7 @@ var DatasetCollectionElementView = Backbone.View.extend( BASE_MVC.LoggableMixin //TODO: lots of unused space in the element - possibly load details and display them horiz. template : _.template([ '', - '<%= element.name %>', + '<%- element.name %>', '', '', '', diff --git a/client/galaxy/scripts/mvc/job/job-li.js b/client/galaxy/scripts/mvc/job/job-li.js index 1521c2c6796..3078f8414e5 100644 --- a/client/galaxy/scripts/mvc/job/job-li.js +++ b/client/galaxy/scripts/mvc/job/job-li.js @@ -121,7 +121,7 @@ JobListItemView.prototype.templates = (function(){ var elTemplate = BASE_MVC.wrapTemplate([ '
', - '
<%= model.id %>
', + '
<%- model.id %>
', // errors, messages, etc. '
', @@ -161,7 +161,7 @@ JobListItemView.prototype.templates = (function(){ // ' ', _l( 'Created' ), ': <%= new Date( job.create_time ).toString() %>, ', //'', - // ' (', _l( 'version' ), ': <%= view.tool.version %>)', + // ' (', _l( 'version' ), ': <%- view.tool.version %>)', //'' ], 'job' ); @@ -170,20 +170,20 @@ JobListItemView.prototype.templates = (function(){ '
', //'
', // '', - // '<%= view.tool.version %>', + // '<%- view.tool.version %>', //'
', '
', '<% _.each( view._labelInputMap(), function( input, label ){ %>', - '
', - '', + '
', + '', //TODO: input dataset name - '<%= input.content.name %>', + '<%- input.content.name %>', '
', '<% }) %>', '<% _.each( view._labelParamMap(), function( param, label ){ %>', - '
', - '', - '<%= param %>', + '
', + '', + '<%- param %>', '
', '<% }) %>', '
', diff --git a/client/galaxy/scripts/mvc/list/list-panel.js b/client/galaxy/scripts/mvc/list/list-panel.js index 6741b11d3e0..70dd7b06825 100644 --- a/client/galaxy/scripts/mvc/list/list-panel.js +++ b/client/galaxy/scripts/mvc/list/list-panel.js @@ -801,9 +801,9 @@ ListPanel.prototype.templates = (function(){ var controlsTemplate = BASE_MVC.wrapTemplate([ '
', '
', - '
<%= view.title %>
', + '
<%- view.title %>
', '
', - '
<%= view.subtitle %>
', + '
<%- view.subtitle %>
', // buttons, controls go here '
', // deleted msg, etc. @@ -942,9 +942,9 @@ ModelListPanel.prototype.templates = (function(){ '
', '
', //TODO: this is really the only difference - consider factoring titlebar out - '
<%= model.name %>
', + '
<%- model.name %>
', '
', - '
<%= view.subtitle %>
', + '
<%- view.subtitle %>
', '
', '
', diff --git a/client/galaxy/scripts/mvc/ui/ui-select-default.js b/client/galaxy/scripts/mvc/ui/ui-select-default.js index 61bc233be07..9b7a1c916c4 100644 --- a/client/galaxy/scripts/mvc/ui/ui-select-default.js +++ b/client/galaxy/scripts/mvc/ui/ui-select-default.js @@ -261,7 +261,7 @@ var View = Backbone.View.extend({ /** Template for select options */ _templateOption: function(options) { - return ''; + return ''; }, /** Template for select view diff --git a/client/toolshed/scripts/mvc/groups/group-detail-view.js b/client/toolshed/scripts/mvc/groups/group-detail-view.js index d0b6bd28b2a..c5825504e2a 100644 --- a/client/toolshed/scripts/mvc/groups/group-detail-view.js +++ b/client/toolshed/scripts/mvc/groups/group-detail-view.js @@ -56,7 +56,7 @@ var GroupDetailView = Backbone.View.extend({ templateRow: function() { return _.template([ '
', - '

<%= group.get("name") %>

', + '

<%= _.escape(group.get("name")) %>

', '

', 'A group of <%= group.get("members").length %> members with <%= group.get("repositories").length %> repositories and a total of <%= group.get("total_downloads") %> combined repository clones.

', @@ -71,10 +71,10 @@ var GroupDetailView = Backbone.View.extend({ '<% _.each(group.get("members"), function(member) { %>', '', '', - '<%= member.username %>', + '<%= _.escape(member.username) %>', '', '', - '<%= member.user_repos_count %>', + '<%= member.user_repos_count %>', '', '', '<%= member.time_created %>', @@ -101,16 +101,16 @@ var GroupDetailView = Backbone.View.extend({ '<% _.each(group.get("repositories"), function(repo) { %>', '', '', - '<%= repo.name %>', + '<%= _.escape(repo.name) %>', '', '', - '<%= repo.description %>', + '<%= _.escape(repo.description) %>', '', '', '<%= repo.times_downloaded %>', '', '', - '<%= repo.owner %>', + '<%= _.escape(repo.owner) %>', '', '', '<% _.each((repo.categories), function(cat) { %>', diff --git a/client/toolshed/scripts/mvc/groups/group-listrow-view.js b/client/toolshed/scripts/mvc/groups/group-listrow-view.js index 59c073907f0..7ffcf7c14d3 100644 --- a/client/toolshed/scripts/mvc/groups/group-listrow-view.js +++ b/client/toolshed/scripts/mvc/groups/group-listrow-view.js @@ -19,7 +19,7 @@ var GroupListRowView = Backbone.View.extend({ templateRow: function() { return _.template([ '">', - '"><%= group.get("name") %>', + '"><%= _.escape(group.get("name")) %>', // 'description', '<%= group.get("total_members") %>', '<%= group.get("total_repos") %>', diff --git a/lib/galaxy/webapps/galaxy/controllers/admin.py b/lib/galaxy/webapps/galaxy/controllers/admin.py index 2dca3bf130b..48143bf925e 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin.py @@ -30,12 +30,12 @@ class UserListGrid( grids.Grid ): class EmailColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): - return user.email + return escape(user.email) class UserNameColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): if user.username: - return user.username + return escape(user.username) return 'not set' class StatusColumn( grids.GridColumn ): @@ -149,12 +149,12 @@ class RoleListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): - return role.name + return escape(role.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): if role.description: - return role.description + return escape(role.description) return '' class TypeColumn( grids.TextColumn ): @@ -248,7 +248,7 @@ class GroupListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, group ): - return group.name + return escape(group.name) class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, group ): @@ -324,12 +324,12 @@ class QuotaListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, quota ): - return quota.name + return escape(quota.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, quota ): if quota.description: - return quota.description + return escape(quota.description) return '' class AmountColumn( grids.TextColumn ): diff --git a/lib/galaxy/webapps/galaxy/controllers/dataset.py b/lib/galaxy/webapps/galaxy/controllers/dataset.py index e41bee9ea68..3018a9fa3b5 100644 --- a/lib/galaxy/webapps/galaxy/controllers/dataset.py +++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py @@ -29,7 +29,7 @@ class HistoryDatasetAssociationListGrid( grids.Grid ): # Custom columns for grid. class HistoryColumn( grids.GridColumn ): def get_value( self, trans, grid, hda): - return hda.history.name + return escape(hda.history.name) class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, hda ): @@ -1098,7 +1098,7 @@ class DatasetInterface( BaseUIController, UsesAnnotations, UsesItemRatings, Uses trans.sa_session.flush() hist_names_str = ", ".join( ['%s' % ( url_for( controller="history", action="switch_to_history", - hist_id=trans.security.encode_id( hist.id ) ), hist.name ) + hist_id=trans.security.encode_id( hist.id ) ), escape(hist.name) ) for hist in target_histories ] ) num_source = len( source_content_ids ) - invalid_contents num_target = len(target_histories) diff --git a/lib/galaxy/webapps/galaxy/controllers/external_service.py b/lib/galaxy/webapps/galaxy/controllers/external_service.py index 83aaf8836d1..c28e53d6476 100644 --- a/lib/galaxy/webapps/galaxy/controllers/external_service.py +++ b/lib/galaxy/webapps/galaxy/controllers/external_service.py @@ -4,6 +4,9 @@ from galaxy.web.base.controller import * from galaxy.web.framework.helpers import time_ago, iff, grids from galaxy.model.orm import * from galaxy import model, util +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape from galaxy.web.form_builder import * from .requests_common import invalid_id_redirect import logging, os @@ -14,7 +17,7 @@ class ExternalServiceGrid( grids.Grid ): # Custom column types class NameColumn( grids.TextColumn ): def get_value(self, trans, grid, external_service): - return external_service.name + return escape(external_service.name) class ExternalServiceTypeColumn( grids.TextColumn ): def get_value(self, trans, grid, external_service): try: diff --git a/lib/galaxy/webapps/galaxy/controllers/forms.py b/lib/galaxy/webapps/galaxy/controllers/forms.py index f901e42dcde..7f280741310 100644 --- a/lib/galaxy/webapps/galaxy/controllers/forms.py +++ b/lib/galaxy/webapps/galaxy/controllers/forms.py @@ -2,6 +2,9 @@ from galaxy.web.base.controller import * from galaxy.model.orm import * from galaxy.datatypes import sniff from galaxy import model, util +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape import logging, os, sys from galaxy.web.form_builder import * from galaxy.tools.parameters.basic import parameter_types @@ -18,10 +21,10 @@ class FormsGrid( grids.Grid ): # Custom column types class NameColumn( grids.TextColumn ): def get_value(self, trans, grid, form): - return form.latest_form.name + return escape(form.latest_form.name) class DescriptionColumn( grids.TextColumn ): def get_value(self, trans, grid, form): - return form.latest_form.desc + return escape(form.latest_form.desc) class TypeColumn( grids.TextColumn ): def get_value(self, trans, grid, form): return form.latest_form.type diff --git a/lib/galaxy/webapps/galaxy/controllers/history.py b/lib/galaxy/webapps/galaxy/controllers/history.py index 6ce1bfef57a..33151db601c 100644 --- a/lib/galaxy/webapps/galaxy/controllers/history.py +++ b/lib/galaxy/webapps/galaxy/controllers/history.py @@ -27,7 +27,7 @@ log = logging.getLogger( __name__ ) class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, history ): - return history.get_display_name() + return escape(history.get_display_name()) class HistoryListGrid( grids.Grid ): @@ -142,7 +142,7 @@ class SharedHistoryListGrid( grids.Grid ): class SharedByColumn( grids.GridColumn ): def get_value( self, trans, grid, history ): - return history.user.email + return escape(history.user.email) # Grid definition title = "Histories shared with you by others" diff --git a/lib/galaxy/webapps/galaxy/controllers/library.py b/lib/galaxy/webapps/galaxy/controllers/library.py index e2dfc1b60eb..94d9c38249d 100644 --- a/lib/galaxy/webapps/galaxy/controllers/library.py +++ b/lib/galaxy/webapps/galaxy/controllers/library.py @@ -14,12 +14,12 @@ class LibraryListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): - return library.name + return escape(library.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): if library.description: - return library.description + return escape(library.description) return '' # Grid definition diff --git a/lib/galaxy/webapps/galaxy/controllers/library_admin.py b/lib/galaxy/webapps/galaxy/controllers/library_admin.py index 8976d07b021..c71c5a6ade9 100644 --- a/lib/galaxy/webapps/galaxy/controllers/library_admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/library_admin.py @@ -15,11 +15,11 @@ log = logging.getLogger( __name__ ) class LibraryListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): - return library.name + return escape(library.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): if library.description: - return library.description + return escape(library.description) return '' class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, library ): diff --git a/lib/galaxy/webapps/galaxy/controllers/request_type.py b/lib/galaxy/webapps/galaxy/controllers/request_type.py index 944e44e805c..27ccdd02b11 100644 --- a/lib/galaxy/webapps/galaxy/controllers/request_type.py +++ b/lib/galaxy/webapps/galaxy/controllers/request_type.py @@ -3,27 +3,31 @@ from __future__ import absolute_import from galaxy.web.base.controller import * from galaxy.web.framework.helpers import time_ago, iff, grids from galaxy.model.orm import * +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape from galaxy import model, util from galaxy.web.form_builder import * from .requests_common import invalid_id_redirect import logging, os + log = logging.getLogger( __name__ ) class RequestTypeGrid( grids.Grid ): # Custom column types class NameColumn( grids.TextColumn ): def get_value(self, trans, grid, request_type): - return request_type.name + return escape(request_type.name) class DescriptionColumn( grids.TextColumn ): def get_value(self, trans, grid, request_type): - return request_type.desc + return escape(request_type.desc) class RequestFormColumn( grids.TextColumn ): def get_value(self, trans, grid, request_type): - return request_type.request_form.name + return escape(request_type.request_form.name) class SampleFormColumn( grids.TextColumn ): def get_value(self, trans, grid, request_type): - return request_type.sample_form.name + return escape(request_type.sample_form.name) class ExternalServiceColumn( grids.IntegerColumn ): def get_value(self, trans, grid, request_type): if request_type.external_services: diff --git a/lib/galaxy/webapps/galaxy/controllers/requests_admin.py b/lib/galaxy/webapps/galaxy/controllers/requests_admin.py index 10665404401..489143b5980 100644 --- a/lib/galaxy/webapps/galaxy/controllers/requests_admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/requests_admin.py @@ -7,6 +7,8 @@ from galaxy import model, util from galaxy.web.form_builder import * from .requests_common import RequestsGrid, invalid_id_redirect from galaxy import eggs +eggs.require( "MarkupSafe" ) +from markupsafe import escape eggs.require("amqp") import amqp import logging, os, pexpect, ConfigParser @@ -16,7 +18,7 @@ log = logging.getLogger( __name__ ) class AdminRequestsGrid( RequestsGrid ): class UserColumn( grids.TextColumn ): def get_value( self, trans, grid, request ): - return request.user.email + return escape(request.user.email) # Grid definition columns = [ col for col in RequestsGrid.columns ] columns.append( UserColumn( "User", @@ -37,7 +39,7 @@ class DataTransferGrid( grids.Grid ): # Custom column types class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, sample_dataset ): - return sample_dataset.name + return escape(sample_dataset.name) class SizeColumn( grids.TextColumn ): def get_value( self, trans, grid, sample_dataset ): return sample_dataset.size @@ -47,7 +49,7 @@ class DataTransferGrid( grids.Grid ): class ExternalServiceColumn( grids.TextColumn ): def get_value( self, trans, grid, sample_dataset ): try: - return sample_dataset.external_service.name + return escape(sample_dataset.external_service.name) except: return 'None' # Grid definition diff --git a/lib/galaxy/webapps/galaxy/controllers/requests_common.py b/lib/galaxy/webapps/galaxy/controllers/requests_common.py index 8a3c3be5682..d6f0301494c 100644 --- a/lib/galaxy/webapps/galaxy/controllers/requests_common.py +++ b/lib/galaxy/webapps/galaxy/controllers/requests_common.py @@ -2,6 +2,9 @@ import csv import logging import re from galaxy import model, util, web +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape from galaxy.model.orm import and_, func, select from galaxy.security.validate_user_input import validate_email from galaxy.web.base.controller import BaseUIController, UsesFormDefinitionsMixin @@ -14,10 +17,10 @@ class RequestsGrid( grids.Grid ): # Custom column types class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, request ): - return request.name + return escape(request.name) class DescriptionColumn( grids.TextColumn ): def get_value(self, trans, grid, request): - return request.desc + return escape(request.desc) class SamplesColumn( grids.GridColumn ): def get_value(self, trans, grid, request): return str( len( request.samples ) ) diff --git a/lib/galaxy/webapps/galaxy/controllers/visualization.py b/lib/galaxy/webapps/galaxy/controllers/visualization.py index a4a1fc66a8f..e3c7add5d62 100644 --- a/lib/galaxy/webapps/galaxy/controllers/visualization.py +++ b/lib/galaxy/webapps/galaxy/controllers/visualization.py @@ -33,7 +33,7 @@ log = logging.getLogger( __name__ ) class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, history ): - return history.get_display_name() + return escape(history.get_display_name()) def get_link( self, trans, grid, history ): # Provide link to list all datasets in history that have a given dbkey. # Right now, only dbkey needs to be passed through, but pass through diff --git a/lib/galaxy/webapps/reports/controllers/jobs.py b/lib/galaxy/webapps/reports/controllers/jobs.py index de3edcb1ead..19bca27fa3f 100644 --- a/lib/galaxy/webapps/reports/controllers/jobs.py +++ b/lib/galaxy/webapps/reports/controllers/jobs.py @@ -7,6 +7,9 @@ from galaxy.web.framework.helpers import grids from galaxy.model.orm import and_, not_, or_ import pkg_resources pkg_resources.require( "SQLAlchemy >= 0.4" ) +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape import sqlalchemy as sa from galaxy.webapps.reports.controllers.query import ReportQueryBuilder @@ -89,7 +92,7 @@ class SpecifiedDateListGrid( grids.Grid ): def get_value( self, trans, grid, job ): if job.user: - return job.user.email + return escape(job.user.email) return 'anonymous' class EmailColumn( grids.GridColumn ): diff --git a/lib/galaxy/webapps/reports/controllers/sample_tracking.py b/lib/galaxy/webapps/reports/controllers/sample_tracking.py index 8186531e190..577b797f7e9 100644 --- a/lib/galaxy/webapps/reports/controllers/sample_tracking.py +++ b/lib/galaxy/webapps/reports/controllers/sample_tracking.py @@ -6,6 +6,9 @@ from galaxy.web.framework.helpers import grids from galaxy.model.orm import and_ import pkg_resources pkg_resources.require( "SQLAlchemy >= 0.4" ) +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape import sqlalchemy as sa from galaxy.webapps.reports.controllers.query import ReportQueryBuilder @@ -18,7 +21,7 @@ class SpecifiedDateListGrid( grids.Grid ): class RequestNameColumn( grids.TextColumn ): def get_value( self, trans, grid, request ): - return request.name + return escape(request.name) class CreateTimeColumn( grids.DateTimeColumn ): @@ -29,7 +32,7 @@ class SpecifiedDateListGrid( grids.Grid ): def get_value( self, trans, grid, request ): if request.user: - return request.user.email + return escape(request.user.email) return 'unknown' class EmailColumn( grids.GridColumn ): diff --git a/lib/galaxy/webapps/reports/controllers/workflows.py b/lib/galaxy/webapps/reports/controllers/workflows.py index 562a1a55619..5983988b65c 100644 --- a/lib/galaxy/webapps/reports/controllers/workflows.py +++ b/lib/galaxy/webapps/reports/controllers/workflows.py @@ -6,6 +6,8 @@ from galaxy.model.orm import and_ from galaxy.web.base.controller import BaseUIController, web from galaxy.web.framework.helpers import grids eggs.require( "SQLAlchemy >= 0.4" ) +eggs.require("MarkupSafe") +from markupsafe import escape import sqlalchemy as sa from galaxy.webapps.reports.controllers.query import ReportQueryBuilder from galaxy.webapps.reports.controllers.jobs import sorter @@ -19,7 +21,7 @@ class SpecifiedDateListGrid( grids.Grid ): class WorkflowNameColumn( grids.TextColumn ): def get_value( self, trans, grid, stored_workflow ): - return stored_workflow.name + return escape(stored_workflow.name) class CreateTimeColumn( grids.DateTimeColumn ): @@ -30,7 +32,7 @@ class SpecifiedDateListGrid( grids.Grid ): def get_value( self, trans, grid, stored_workflow ): if stored_workflow.user: - return stored_workflow.user.email + return escape(stored_workflow.user.email) return 'unknown' class EmailColumn( grids.GridColumn ): diff --git a/lib/tool_shed/grids/admin_grids.py b/lib/tool_shed/grids/admin_grids.py index 4489eadacdd..a582e267d88 100644 --- a/lib/tool_shed/grids/admin_grids.py +++ b/lib/tool_shed/grids/admin_grids.py @@ -12,6 +12,9 @@ from tool_shed.grids.repository_grids import RepositoryGrid from galaxy import eggs eggs.require( 'mercurial' ) +eggs.require("MarkupSafe") +from markupsafe import escape + from mercurial import commands from mercurial import hg from mercurial import ui @@ -25,14 +28,14 @@ class UserGrid( grids.Grid ): class UserLoginColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): - return user.email + return escape(user.email) class UserNameColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): if user.username: - return user.username + return escape(user.username) return 'not set' @@ -149,7 +152,7 @@ class RoleGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): - return str( role.name ) + return escape( str( role.name ) ) class DescriptionColumn( grids.TextColumn ): @@ -414,13 +417,13 @@ class RepositoryMetadataGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, repository_metadata ): - return repository_metadata.repository.name + return escape(repository_metadata.repository.name) class OwnerColumn( grids.TextColumn ): def get_value( self, trans, grid, repository_metadata ): - return repository_metadata.repository.user.username + return escape(repository_metadata.repository.user.username) class RevisionColumn( grids.TextColumn ): diff --git a/lib/tool_shed/grids/repository_grids.py b/lib/tool_shed/grids/repository_grids.py index d10427d5efe..0180101403b 100644 --- a/lib/tool_shed/grids/repository_grids.py +++ b/lib/tool_shed/grids/repository_grids.py @@ -383,13 +383,13 @@ class MatchedRepositoryGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, repository_metadata ): - return repository_metadata.repository.name + return escape_html(repository_metadata.repository.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, repository_metadata ): - return repository_metadata.repository.description + return escape_html(repository_metadata.repository.description) class RevisionColumn( grids.TextColumn ): @@ -402,7 +402,7 @@ class MatchedRepositoryGrid( grids.Grid ): def get_value( self, trans, grid, repository_metadata ): if repository_metadata.repository.user: - return repository_metadata.repository.user.username + return escape_html( repository_metadata.repository.user.username ) return 'no user' # Grid definition diff --git a/lib/tool_shed/grids/repository_review_grids.py b/lib/tool_shed/grids/repository_review_grids.py index 26a4c2b5aba..bd2937e4853 100644 --- a/lib/tool_shed/grids/repository_review_grids.py +++ b/lib/tool_shed/grids/repository_review_grids.py @@ -9,6 +9,10 @@ import tool_shed.util.shed_util_common as suc from tool_shed.util import hg_util from tool_shed.util import metadata_util +from galaxy import eggs +eggs.require("MarkupSafe") +from markupsafe import escape + log = logging.getLogger( __name__ ) @@ -18,13 +22,13 @@ class ComponentGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, component ): - return component.name + return escape(component.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, component ): - return component.description + return escape(component.description) title = "Repository review components" model_class = model.Component @@ -286,13 +290,13 @@ class RepositoryReviewsByUserGrid( grids.Grid ): class RepositoryNameColumn( grids.TextColumn ): def get_value( self, trans, grid, review ): - return review.repository.name + return escape(review.repository.name) class RepositoryDescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, review ): - return review.repository.description + return escape(review.repository.description) class RevisionColumn( grids.TextColumn ): diff --git a/static/maps/mvc/history/multi-panel.js.map b/static/maps/mvc/history/multi-panel.js.map index 2f26adecb76..b37c5046ece 100644 --- a/static/maps/mvc/history/multi-panel.js.map +++ b/static/maps/mvc/history/multi-panel.js.map @@ -1 +1 @@ -{"version":3,"file":"multi-panel.js","sources":["../../../src/mvc/history/multi-panel.js"],"names":["define","HISTORY_MODEL","HPANEL_EDIT","baseMVC","ajaxQueue","historyCopyDialog","history","options","validateName","name","Galaxy","modal","$","size","$invalidTitle","attr","css","color","margin-top","addClass","text","_l","append","copyHistory","$copyIndicator","copy","fail","alert","always","hide","checkNameAndCopy","val","historyName","get","defaultCopyName","show","_","extend","title","body","join","buttons","Cancel","Copy","focus","select","on","ev","keyCode","HistoryPanelColumn","Backbone","View","LoggableMixin","tagName","className","id","this","model","initialize","purgeAllowed","isUndefined","panel","createPanel","setUpListeners","panelOptions","dragItems","HistoryPanelEdit","_renderEmptyMessage","__patch_renderEmptyMessage","$whereTo","hdaCount","chain","values","flatten","value","length","$emptyMsg","$emptyMessage","isEmpty","hdaViews","contents","empty","searchFor","noneFoundMsg","emptyMsg","column","once","trigger","setUpPanelListeners","listenTo","rendered","inView","viewLeft","viewRight","columnLeft","$el","offset","left","columnRight","width","$panel","render","speed","undefined","modelData","toJSON","html","template","renderPanel","setUpBehaviors","data","isCurrentHistory","currentHistory","controlsLeftTemplate","view","controlsRightTemplate","setElement","$list","before","_renderDropTargetHelp","events","click .switch-to.btn","setAsCurrent","click .delete-history","_delete","xhr","status","error","done","click .undelete-history","undelete","click .purge-history","confirm","purge","click .copy-history","variable","toString","MultiPanelColumns","log","currentHistoryId","Error","columnWidth","borderWidth","columnGap","headerHeight","footerHeight","controlsHeight","order","_initSortOrders","hdaQueue","NamedAjaxQueue","collection","setCollection","histories","columnMap","createColumns","columnOptions","_comparator","getter","a","b","asc","sortOrders","update","fn","h","Date","name-dsc","size-dsc","models","multipanel","stopListening","sortCollection","silent","setUpCollectionListeners","add","addAsCurrentColumn","set-as-current","setCurrentHistory","change:deleted change:purged","handleDeletedHistory","sort","renderColumns","oldCurrentColumn","height","newCurrentColumn","_recalcFirstColumnHeight","includeDeleted","removeColumn","sortOrder","comparator","is","popover","create","current","each","createColumn","config","allow_user_dataset_purge","setUpColumnListeners","sortedFilteredColumns","filters","sortedColumns","filter","filtered","every","map","call","sorted","addColumn","newColumn","queueHdaFetch","widthToRemove","fadeOut","remove","checkColumnsInView","in-view","view:draggable:dragstart","_dropData","JSON","parse","dataTransfer","getData","currentColumnDropTargetOn","view:draggable:dragend","currentColumnDropTargetOff","droptarget:drop","toCopy","json","isCopyable","queue","forEach","content","start","fetch","columnMapLength","Object","keys","fxSpeed","mainTemplate","sortedAndFiltered","$middle","appendTo","delegateEvents","renderColumn","xhrData","ids","storage","dataset_details","renderItems","running","queueHdaFetchDetails","haveDetails","details","renderInfo","msg","click .done.btn","click .create-new.btn","click #include-deleted","click .order .set-order","click #toggle-deleted","click #toggle-hidden","close","destination","root","galaxy_config","window","location","_clickToggleDeletedHistories","toggleDeletedHistories","currentTarget","_clickToggleDeletedDatasets","toggleDeletedDatasets","i","delay","toggleShowDeleted","_clickToggleHiddenDatasets","toggleHiddenDatasets","toggleShowHidden","_chooseOrder","orderKey","_moreOptionsPopover","searchInput","placeholder","onsearch","matchesAll","onclear","onfirstsearch","clear","searchItems","progress","curr","total","deferred","clearSearch","resize","debouncedInView","debounce","parent","scroll","container","placement","optionsPopoverTemplate","$firstColumn","first","middleHeight","controlHeight","find","_viewport","right","columnsInView","vp","currentColumn","dataDropped","dropTargetOn","prototype","dataDrop","dropTarget","columns"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"multi-panel.js","sources":["../../../src/mvc/history/multi-panel.js"],"names":["define","HISTORY_MODEL","HPANEL_EDIT","baseMVC","ajaxQueue","historyCopyDialog","history","options","validateName","name","Galaxy","modal","$","size","$invalidTitle","attr","css","color","margin-top","addClass","text","_l","append","copyHistory","$copyIndicator","copy","fail","alert","always","hide","checkNameAndCopy","val","historyName","_","escape","get","defaultCopyName","show","extend","title","body","join","buttons","Cancel","Copy","focus","select","on","ev","keyCode","HistoryPanelColumn","Backbone","View","LoggableMixin","tagName","className","id","this","model","initialize","purgeAllowed","isUndefined","panel","createPanel","setUpListeners","panelOptions","dragItems","HistoryPanelEdit","_renderEmptyMessage","__patch_renderEmptyMessage","$whereTo","hdaCount","chain","values","flatten","value","length","$emptyMsg","$emptyMessage","isEmpty","hdaViews","contents","empty","searchFor","noneFoundMsg","emptyMsg","column","once","trigger","setUpPanelListeners","listenTo","rendered","inView","viewLeft","viewRight","columnLeft","$el","offset","left","columnRight","width","$panel","render","speed","undefined","modelData","toJSON","html","template","renderPanel","setUpBehaviors","data","isCurrentHistory","currentHistory","controlsLeftTemplate","view","controlsRightTemplate","setElement","$list","before","_renderDropTargetHelp","events","click .switch-to.btn","setAsCurrent","click .delete-history","_delete","xhr","status","error","done","click .undelete-history","undelete","click .purge-history","confirm","purge","click .copy-history","variable","toString","MultiPanelColumns","log","currentHistoryId","Error","columnWidth","borderWidth","columnGap","headerHeight","footerHeight","controlsHeight","order","_initSortOrders","hdaQueue","NamedAjaxQueue","collection","setCollection","histories","columnMap","createColumns","columnOptions","_comparator","getter","a","b","asc","sortOrders","update","fn","h","Date","name-dsc","size-dsc","models","multipanel","stopListening","sortCollection","silent","setUpCollectionListeners","add","addAsCurrentColumn","set-as-current","setCurrentHistory","change:deleted change:purged","handleDeletedHistory","sort","renderColumns","oldCurrentColumn","height","newCurrentColumn","_recalcFirstColumnHeight","includeDeleted","removeColumn","sortOrder","comparator","is","popover","create","current","each","createColumn","config","allow_user_dataset_purge","setUpColumnListeners","sortedFilteredColumns","filters","sortedColumns","filter","filtered","every","map","call","sorted","addColumn","newColumn","queueHdaFetch","widthToRemove","fadeOut","remove","checkColumnsInView","in-view","view:draggable:dragstart","_dropData","JSON","parse","dataTransfer","getData","currentColumnDropTargetOn","view:draggable:dragend","currentColumnDropTargetOff","droptarget:drop","toCopy","json","isCopyable","queue","forEach","content","start","fetch","columnMapLength","Object","keys","fxSpeed","mainTemplate","sortedAndFiltered","$middle","appendTo","delegateEvents","renderColumn","xhrData","ids","storage","dataset_details","renderItems","running","queueHdaFetchDetails","haveDetails","details","renderInfo","msg","click .done.btn","click .create-new.btn","click #include-deleted","click .order .set-order","click #toggle-deleted","click #toggle-hidden","close","destination","root","galaxy_config","window","location","_clickToggleDeletedHistories","toggleDeletedHistories","currentTarget","_clickToggleDeletedDatasets","toggleDeletedDatasets","i","delay","toggleShowDeleted","_clickToggleHiddenDatasets","toggleHiddenDatasets","toggleShowHidden","_chooseOrder","orderKey","_moreOptionsPopover","searchInput","placeholder","onsearch","matchesAll","onclear","onfirstsearch","clear","searchItems","progress","curr","total","deferred","clearSearch","resize","debouncedInView","debounce","parent","scroll","container","placement","optionsPopoverTemplate","$firstColumn","first","middleHeight","controlHeight","find","_viewport","right","columnsInView","vp","currentColumn","dataDropped","dropTargetOn","prototype","dataDrop","dropTarget","columns"],"mappings":"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"} \ No newline at end of file diff --git a/static/maps/mvc/ui/ui-select-default.js.map b/static/maps/mvc/ui/ui-select-default.js.map index 9d1e91c997a..0184d550bbf 100644 --- a/static/maps/mvc/ui/ui-select-default.js.map +++ b/static/maps/mvc/ui/ui-select-default.js.map @@ -1 +1 @@ -{"version":3,"file":"ui-select-default.js","sources":["../../../src/mvc/ui/ui-select-default.js"],"names":["define","Utils","ButtonCheck","View","Backbone","extend","optionsDefault","id","uid","cls","error_text","empty_text","visible","wait","multiple","searchable","optional","initialize","options","self","this","merge","setElement","_template","$select","$el","find","$icon","$button","all_button","onclick","new_value","value","_availableOptions","trigger","prepend","addClass","prop","remove","update","data","undefined","hide","show","on","onchange","exists","val","select2","current","_getValue","$","isArray","length","_size","first","text","unwait","removeClass","disabled","is","enable","disable","append","_templateOption","label","key","off","setOnChange","callback","validate","available","each","i","e","push","attr"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ui-select-default.js","sources":["../../../src/mvc/ui/ui-select-default.js"],"names":["define","Utils","ButtonCheck","View","Backbone","extend","optionsDefault","id","uid","cls","error_text","empty_text","visible","wait","multiple","searchable","optional","initialize","options","self","this","merge","setElement","_template","$select","$el","find","$icon","$button","all_button","onclick","new_value","value","_availableOptions","trigger","prepend","addClass","prop","remove","update","data","undefined","hide","show","on","onchange","exists","val","select2","current","_getValue","$","isArray","length","_size","first","text","unwait","removeClass","disabled","is","enable","disable","append","_templateOption","label","key","off","setOnChange","callback","validate","available","each","i","e","push","attr","_","escape"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/libs/jquery/jquery.dynatree.js b/static/scripts/libs/jquery/jquery.dynatree.js index e69c8f36b1d..dd31fb1d30d 100644 --- a/static/scripts/libs/jquery/jquery.dynatree.js +++ b/static/scripts/libs/jquery/jquery.dynatree.js @@ -1,2 +1,2 @@ -function _log(a){if(_canLog){var b=Array.prototype.slice.apply(arguments,[1]),c=new Date,d=c.getHours()+":"+c.getMinutes()+":"+c.getSeconds()+"."+c.getMilliseconds();b[0]=d+" - "+b[0];try{switch(a){case"info":window.console.info.apply(window.console,b);break;case"warn":window.console.warn.apply(window.console,b);break;default:window.console.log.apply(window.console,b)}}catch(e){window.console||(_canLog=!1)}}}function logMsg(){Array.prototype.unshift.apply(arguments,["debug"]),_log.apply(this,arguments)}var _canLog=!0,getDynaTreePersistData=void 0,DTNodeStatus_Error=-1,DTNodeStatus_Loading=1,DTNodeStatus_Ok=0;!function($){var Class={create:function(){return function(){this.initialize.apply(this,arguments)}}},DynaTreeNode=Class.create();DynaTreeNode.prototype={initialize:function(a,b,c){this.parent=a,this.tree=b,"string"==typeof c&&(c={title:c}),void 0==c.key&&(c.key="_"+b._nodeCount++),this.data=$.extend({},$.ui.dynatree.nodedatadefaults,c),this.div=null,this.span=null,this.childList=null,this.isLoading=!1,this.hasSubSel=!1},toString:function(){return"dtnode<"+this.data.key+">: '"+this.data.title+"'"},toDict:function(a,b){var c=$.extend({},this.data);if(c.activate=this.tree.activeNode===this,c.focus=this.tree.focusNode===this,c.expand=this.bExpanded,c.select=this.bSelected,b&&b(c),a&&this.childList){c.children=[];for(var d=0;d0||a.minExpandLevel>1,e=a.rootVisible||a.minExpandLevel>0,f="",g=this.parent;g&&(!e||g!=c);)f=(g.isLastSibling()?b.tagEmpty:b.tagVline)+f,g=g.parent;d&&this.parent==c||(f+=this.childList||this.data.isLazy?b.tagExpander:b.tagConnector),a.checkbox&&1!=this.data.hideCheckbox&&!this.data.isStatusNode&&(f+=b.tagCheckbox),this.data.icon?f+="":0==this.data.icon||(f+=b.tagNodeIcon);var h=this.data&&"string"==typeof this.data.tooltip?" title='"+this.data.tooltip+"'":"";return f+=""+this.data.title+""},_fixOrder:function(){var a=this.childList;if(a)for(var b=this.div.firstChild.nextSibling,c=0;c=h&&h+j>=d&&e>=i&&i+k>=e){if(g.className==b.title)return"title";if(g.className==b.expander)return"expander";if(g.className==b.checkbox)return"checkbox";if(g.className==b.nodeIcon)return"icon"}}return"prefix"},getEventTargetType:function(a){var b=a&&a.target?a.target.className:"",c=this.tree.options.classNames;return b==c.title?"title":b==c.expander?"expander":b==c.checkbox?"checkbox":b==c.nodeIcon?"icon":b==c.empty||b==c.vline||b==c.connector?"prefix":b.indexOf(c.folder)>=0||b.indexOf(c.document)>=0?this._getTypeForOuterNodeEvent(a):null},isVisible:function(){for(var a=this._parentList(!0,!1),b=0;ba").focus()}catch(a){}},_activate:function(a,b){this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o",a,b,this);var c=this.tree.options;if(!(this.data.isStatusNode||b&&c.onQueryActivate&&0==c.onQueryActivate.call(this.span,a,this)))if(a){if(this.tree.activeNode){if(this.tree.activeNode===this)return;this.tree.activeNode.deactivate()}c.activeVisible&&this.makeVisible(),this.tree.activeNode=this,c.persist&&$.cookie(c.cookieId+"-active",this.data.key,c.cookie),this.tree.persistence.activeKey=this.data.key,$(this.span).addClass(c.classNames.active),b&&c.onActivate&&c.onActivate.call(this.span,this)}else if(this.tree.activeNode===this){var c=this.tree.options;if(c.onQueryActivate&&0==c.onQueryActivate.call(this.span,!1,this))return;$(this.span).removeClass(c.classNames.active),c.persist&&$.cookie(c.cookieId+"-active","",c.cookie),this.tree.persistence.activeKey=null,this.tree.activeNode=null,b&&c.onDeactivate&&c.onDeactivate.call(this.span,this)}},activate:function(){this._activate(!0,!0)},deactivate:function(){this._activate(!1,!0)},isActive:function(){return this.tree.activeNode===this},_userActivate:function(){var a=!0,b=!1;if(this.data.isFolder)switch(this.tree.options.clickFolderMode){case 2:a=!1,b=!0;break;case 3:a=b=!0}null==this.parent&&this.tree.options.minExpandLevel>0&&(b=!1),b&&(this.toggleExpand(),this.focus()),a&&this.activate()},_setSubSel:function(a){a?(this.hasSubSel=!0,$(this.span).addClass(this.tree.options.classNames.partsel)):(this.hasSubSel=!1,$(this.span).removeClass(this.tree.options.classNames.partsel))},_fixSelectionState:function(){if(this.bSelected){this.visit(function(a){a.parent._setSubSel(!0),a._select(!0,!1,!1)});for(var a=this.parent;a;){a._setSubSel(!0);for(var b=!0,c=0;c0&&!a||this._expand(a))},toggleExpand:function(){this.expand(!this.bExpanded)},collapseSiblings:function(){if(null!=this.parent)for(var a=this.parent.childList,b=0;b=0&&!(c=d[e].nextSibling());e--);c&&c.focus();break;default:b=!1}return!b},onKeypress:function(){},onFocus:function(a){var b=this.tree.options;"blur"==a.type||"focusout"==a.type?(b.onBlur&&b.onBlur.call(this.span,this),this.tree.tnFocused&&$(this.tree.tnFocused.span).removeClass(b.classNames.focused),this.tree.tnFocused=null,b.persist&&$.cookie(b.cookieId+"-focus","",b.cookie)):("focus"==a.type||"focusin"==a.type)&&(this.tree.tnFocused&&this.tree.tnFocused!==this&&(this.tree.logDebug("dtnode.onFocus: out of sync: curFocus: %o",this.tree.tnFocused),$(this.tree.tnFocused.span).removeClass(b.classNames.focused)),this.tree.tnFocused=this,b.onFocus&&b.onFocus.call(this.span,this),$(this.tree.tnFocused.span).addClass(b.classNames.focused),b.persist&&$.cookie(b.cookieId+"-focus",this.data.key,b.cookie))},visit:function(a,b,c){var d=0;if(1==c){if(0==a(this,b))return 1;d++}if(this.childList)for(var e=0;ef)throw" must be a child of ";this.childList.splice(f,0,a)}else this.childList.push(a);var g=c.isInitializing();if(d.persist&&e.cookiesFound&&g?(e.activeKey==a.data.key&&(c.activeNode=a),e.focusedKey==a.data.key&&(c.focusNode=a),a.bExpanded=$.inArray(a.data.key,e.expandedKeyList)>=0,a.bSelected=$.inArray(a.data.key,e.selectedKeyList)>=0):(a.data.activate&&(c.activeNode=a,d.persist&&(e.activeKey=a.data.key)),a.data.focus&&(c.focusNode=a,d.persist&&(e.focusedKey=a.data.key)),a.bExpanded=1==a.data.expand,a.bExpanded&&d.persist&&e.addExpand(a.data.key),a.bSelected=1==a.data.select,a.bSelected&&d.persist&&e.addSelect(a.data.key)),d.minExpandLevel>=a.getLevel()&&(this.bExpanded=!0),a.bSelected&&3==d.selectMode)for(var h=this;h;)h.hasSubSel||h._setSubSel(!0),h=h.parent;return c.bEnableUpdate&&this.render(!0,!0),a},addChild:function(a,b){if(a&&0!=a.length){if(a instanceof DynaTreeNode)return this._addChildNode(a,b);a.length||(a=[a]);for(var c=this.tree.enableUpdate(!1),d=null,e=0;e=0&&(this.expandedKeyList.splice(b,1),$.cookie(this.cookieId+"-expand",this.expandedKeyList.join(","),this.cookieOpts))},addSelect:function(a){this._log("addSelect(%o)",a),$.inArray(a,this.selectedKeyList)<0&&(this.selectedKeyList.push(a),$.cookie(this.cookieId+"-select",this.selectedKeyList.join(","),this.cookieOpts))},clearSelect:function(a){this._log("clearSelect(%o)",a);var b=$.inArray(a,this.selectedKeyList);b>=0&&(this.selectedKeyList.splice(b,1),$.cookie(this.cookieId+"-select",this.selectedKeyList.join(","),this.cookieOpts))},isReloading:function(){return 1==this.cookiesFound},toDict:function(){return{cookiesFound:this.cookiesFound,activeKey:this.activeKey,focusedKey:this.activeKey,expandedKeyList:this.expandedKeyList,selectedKeyList:this.selectedKeyList}},lastentry:void 0};var DynaTree=Class.create();DynaTree.version="$Version: 0.5.4$",DynaTree.prototype={initialize:function(a){this.phase="init",this.$widget=a,this.options=a.options,this.$tree=a.element,this.divTree=this.$tree.get(0)},_load:function(){var a=(this.$widget,this.options);this.bEnableUpdate=!0,this._nodeCount=1,this.activeNode=null,this.focusNode=null,a.classNames!==$.ui.dynatree.defaults.classNames&&(a.classNames=$.extend({},$.ui.dynatree.defaults.classNames,a.classNames)),a.imagePath||$("script").each(function(){return this.src.search(_rexDtLibName)>=0?(a.imagePath=this.src.indexOf("/")>=0?this.src.slice(0,this.src.lastIndexOf("/"))+"/skin/":"skin/",!1):void 0}),this.persistence=new DynaTreeStatus(a.cookieId,a.cookie),a.persist&&($.cookie||_log("warn","Please include jquery.cookie.js to use persistence."),this.persistence.read()),this.logDebug("DynaTree.persistence: %o",this.persistence.toDict()),this.cache={tagEmpty:"",tagVline:"",tagExpander:"",tagConnector:"",tagNodeIcon:"",tagCheckbox:"",lastentry:void 0},a.children||a.initAjax&&a.initAjax.url||a.initId?$(this.divTree).empty():this.divRoot&&$(this.divRoot).remove(),this.tnRoot=new DynaTreeNode(null,this,{title:a.title,key:"root"}),this.tnRoot.data.isFolder=!0,this.tnRoot.render(!1,!1),this.divRoot=this.tnRoot.div,this.divRoot.className=a.classNames.container,this.divTree.appendChild(this.divRoot);var b=this.tnRoot,c=a.persist&&this.persistence.isReloading(),d=!1,e=this.enableUpdate(!1);if(this.logDebug("Dynatree._load(): read tree structure..."),a.children)b.addChild(a.children);else if(a.initAjax&&a.initAjax.url)d=!0,b.data.isLazy=!0,this._reloadAjax();else if(a.initId)this._createFromTag(b,$("#"+a.initId));else{var f=this.$tree.find(">ul").hide();this._createFromTag(b,f),f.remove()}this._checkConsistency(),this.logDebug("Dynatree._load(): render nodes..."),this.enableUpdate(e),this.logDebug("Dynatree._load(): bind events..."),this.$widget.bind(),this.logDebug("Dynatree._load(): postInit..."),this.phase="postInit",a.persist&&this.persistence.write(),this.focusNode&&this.focusNode.isVisible()&&(this.logDebug("Focus on init: %o",this.focusNode),this.focusNode.focus()),!d&&a.onPostInit&&a.onPostInit.call(this,c,!1),this.phase="idle"},_reloadAjax:function(){var a=this.options;if(!a.initAjax||!a.initAjax.url)throw"tree.reload() requires 'initAjax' mode.";var b=this.persistence,c=$.extend({},a.initAjax);if(c.addActiveKey&&(c.data.activeKey=b.activeKey),c.addFocusedKey&&(c.data.focusedKey=b.focusedKey),c.addExpandedKeyList&&(c.data.expandedKeyList=b.expandedKeyList.join(",")),c.addSelectedKeyList&&(c.data.selectedKeyList=b.selectedKeyList.join(",")),a.onPostInit){c.success&&this.logWarning("initAjax: success callback is ignored when onPostInit was specified."),c.error&&this.logWarning("initAjax: error callback is ignored when onPostInit was specified.");var d=b.isReloading();c.success=function(b){a.onPostInit.call(b.tree,d,!1)},c.error=function(b){a.onPostInit.call(b.tree,d,!0)}}this.logDebug("Dynatree._init(): send Ajax request..."),this.tnRoot.appendAjax(c)},toString:function(){return"DynaTree '"+this.options.title+"'"},toDict:function(){return this.tnRoot.toDict(!0)},getPersistData:function(){return this.persistence.toDict()},logDebug:function(){this.options.debugLevel>=2&&(Array.prototype.unshift.apply(arguments,["debug"]),_log.apply(this,arguments))},logInfo:function(){this.options.debugLevel>=1&&(Array.prototype.unshift.apply(arguments,["info"]),_log.apply(this,arguments))},logWarning:function(){Array.prototype.unshift.apply(arguments,["warn"]),_log.apply(this,arguments)},isInitializing:function(){return"init"==this.phase||"postInit"==this.phase},isReloading:function(){return("init"==this.phase||"postInit"==this.phase)&&this.options.persist&&this.persistence.cookiesFound},isUserEvent:function(){return"userEvent"==this.phase},redraw:function(){this.logDebug("dynatree.redraw()..."),this.tnRoot.render(!0,!0),this.logDebug("dynatree.redraw() done.")},reloadAjax:function(){this.logWarning("tree.reloadAjax() is deprecated since v0.5.2 (use reload() instead).")},reload:function(){this._load()},getRoot:function(){return this.tnRoot},getNodeByKey:function(a){var b=document.getElementById(this.options.idPrefix+a);return b&&b.dtnode?b.dtnode:null},getActiveNode:function(){return this.activeNode},reactivate:function(a){var b=this.activeNode;b&&(this.activeNode=null,b.activate(),a&&b.focus())},getSelectedNodes:function(a){var b=[];return this.tnRoot.visit(function(c){return c.bSelected&&(b.push(c),1==a)?!1:void 0}),b},activateKey:function(a){var b=null===a?null:this.getNodeByKey(a);return b?(b.focus(),b.activate(),b):(this.activeNode&&this.activeNode.deactivate(),this.activeNode=null,null)},selectKey:function(a,b){var c=this.getNodeByKey(a);return c?(c.select(b),c):null},enableUpdate:function(a){return this.bEnableUpdate==a?a:(this.bEnableUpdate=a,a&&this.redraw(),!a)},visit:function(a,b,c){return this.tnRoot.visit(a,b,c)},_createFromTag:function(parentTreeNode,$ulParent){var self=this;$ulParent.find(">li").each(function(){var $li=$(this),$liSpan=$li.find(">span:first"),title;if($liSpan.length)title=$liSpan.html();else{title=$li.html();var iPos=title.search(/