diff --git a/index.html b/index.html index c1440954..cb354a9e 100644 --- a/index.html +++ b/index.html @@ -262,7 +262,7 @@ // path and arguments. function parseUrlHash(hash) { var parser = document.createElement('a'); - parser.href = '/' + location.hash.substr(1); + parser.href = '/' + hash.substr(1); var params = {}; parser.search.substr(1).split("&").forEach(function(part) { var item = part.split("="); @@ -270,11 +270,11 @@ params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]); } }); - return {path: parser.pathname, params: params}; + return {path: parser.pathname.substr(1).split("/"), params: params}; } function composeUrlHash(path, params) { - var url = path; + var url = path.join("/"); var args = []; for (var key in params) { if (params.hasOwnProperty(key)) { @@ -284,7 +284,24 @@ if (args.length > 0) { url += "?" + args.join("&"); } - return url. + return url; + } + + function addParamToHash(hash, key, value) { + var hash = parseUrlHash(hash); + if (!hash.params) { + hash.params = {}; + } + hash.params[key] = value; + return composeUrlHash(hash.path, hash.params); + } + + function removeParamFromHash(hash, key) { + var hash = parseUrlHash(hash); + if (hash.params) { + delete hash.params[key]; + } + return composeUrlHash(hash.path, hash.params); } // Detect server address from the URL @@ -543,7 +560,7 @@ render() { return ( - close + close ); } } @@ -1005,7 +1022,7 @@ } {title} {this.props.onCancel && !this.props.required ? - × + × : } ); @@ -1311,9 +1328,9 @@ render: function() { return (
); } @@ -1323,9 +1340,9 @@ render: function() { return ( ); } @@ -1590,7 +1607,7 @@ onSubmit={this.handleTagsUpdated} /> @@ -1705,7 +1722,7 @@ : {this.props.showContextMenu ? - + expand_more : null} @@ -2195,13 +2212,13 @@ @@ -2728,6 +2745,7 @@ this.props.onTopicTagsUpdate(this.props.topic, tags); } }, + handleContextMenu: function(params) { var instance = this; var topic = Tinode.getTopic(this.props.topic); @@ -2900,12 +2918,12 @@