| CODENOTIFIER | HelpYou are not signed inSign in |
Project: Alfresco
Revision: 2853
Author: mikeh
Date: 02 Sep 2008 14:18:46
Changes:DocDetails path breadcrumb links to file on last entry
Files:| ... | ...@@ -10,6 +10,6 @@ | |
| 10 | 10 | |
| 11 | 11 | <div class="path-nav"> |
| 12 | 12 | <span class="heading">${msg("path.location")}:</span> |
| 13 | <span class="path-link"><a href="${url.context}/page/site/${page.url.templateArgs.site}/documentlibrary">${msg("path.documents")}</a></span> | |
| 13 | <span id="${args.htmlid}-defaultPath" class="path-link"><a href="${url.context}/page/site/${page.url.templateArgs.site}/documentlibrary">${msg("path.documents")}</a></span> | |
| 14 | 14 | <span id="${args.htmlid}-path"></span> |
| 15 | 15 | </div> |
| 16 | 16 | \ No newline at end of file |
| ... | ...@@ -53,16 +53,16 @@ | |
| 53 | 53 | Alfresco.DocumentPath = function(htmlId) |
| 54 | 54 | { |
| 55 | 55 | this.name = "Alfresco.DocumentPath"; |
| 56 | this.id = htmlId; | |
| 56 | this.id = htmlId; | |
| 57 | 57 | |
| 58 | 58 | /* Register this component */ |
| 59 | 59 | Alfresco.util.ComponentManager.register(this); |
| 60 | 60 | |
| 61 | 61 | /* Load YUI Components */ |
| 62 | 62 | Alfresco.util.YUILoaderHelper.require([], this.onComponentsLoaded, this); |
| 63 | ||
| 63 | ||
| 64 | 64 | /* Decoupled event listeners */ |
| 65 | YAHOO.Bubbling.on("documentDetailsAvailable", this.onDocumentDetailsAvailable, this); | |
| 65 | YAHOO.Bubbling.on("documentDetailsAvailable", this.onDocumentDetailsAvailable, this); | |
| 66 | 66 | |
| 67 | 67 | return this; |
| 68 | 68 | } |
| ... | ...@@ -84,8 +84,8 @@ | |
| 84 | 84 | * @type string |
| 85 | 85 | */ |
| 86 | 86 | siteId: "" |
| 87 | }, | |
| 88 | ||
| 87 | }, | |
| 88 | ||
| 89 | 89 | /** |
| 90 | 90 | * Set multiple initialization options at once. |
| 91 | 91 | * |
| ... | ...@@ -121,63 +121,76 @@ | |
| 121 | 121 | onComponentsLoaded: function DocumentPath_onComponentsLoaded() |
| 122 | 122 | { |
| 123 | 123 | // don't need to do anything we will be informed via an event when data is ready |
| 124 | }, | |
| 125 | ||
| 126 | /** | |
| 127 | * Event handler called when the "documentDetailsAvailable" event is received | |
| 128 | */ | |
| 129 | onDocumentDetailsAvailable: function DocumentPath_onDocumentDetailsAvailable(layer, args) | |
| 130 | { | |
| 131 | var docData = args[1]; | |
| 132 | var pathHtml = ""; | |
| 133 | var baseLinkUrl = Alfresco.constants.URL_PAGECONTEXT + "site/" + this.options.siteId + "/documentlibrary#path="; | |
| 134 | var pathUrl = "/"; | |
| 135 | ||
| 136 | // create an array of paths | |
| 137 | var path = docData.location.path; | |
| 138 | if (path.length > 1) | |
| 139 | { | |
| 140 | var folders = path.substring(1, path.length).split("/"); | |
| 141 | ||
| 142 | if (folders.length > 0) | |
| 143 | { | |
| 144 | pathHtml += " > "; | |
| 145 | } | |
| 146 | ||
| 147 | for (var x = 0; x < folders.length; x++) | |
| 148 | { | |
| 149 | pathUrl += folders[x]; | |
| 150 | ||
| 151 | pathHtml += '<img src="' + Alfresco.constants.URL_CONTEXT + '/components/documentlibrary/images/folder-closed-16.png'; | |
| 152 | pathHtml += '" /><span class="path-link"><a href="' + baseLinkUrl; | |
| 153 | pathHtml += this._encodePath(pathUrl); | |
| 154 | pathHtml += '">' | |
| 155 | pathHtml += $html(folders[x]); | |
| 156 | pathHtml += '</a></span>'; | |
| 157 | ||
| 158 | if (x < (folders.length-1)) | |
| 159 | { | |
| 160 | pathHtml += " > "; | |
| 161 | pathUrl += "/"; | |
| 162 | } | |
| 163 | } | |
| 164 | } | |
| 165 | ||
| 166 | Dom.get(this.id + "-path").innerHTML = pathHtml; | |
| 167 | }, | |
| 168 | ||
| 169 | /** | |
| 170 | * Encodes the given path for use on a URL | |
| 171 | * | |
| 172 | * @method _encodePath | |
| 173 | * @param path The path to encode | |
| 174 | * @return The encoded path | |
| 175 | */ | |
| 176 | _encodePath: function DocumentPath__encodePath(path) | |
| 177 | { | |
| 178 | var encodedPath = (YAHOO.env.ua.gecko) ? encodeURIComponent(path) : path; | |
| 179 | ||
| 180 | return encodedPath; | |
| 124 | }, | |
| 125 | ||
| 126 | /** | |
| 127 | * Event handler called when the "documentDetailsAvailable" event is received | |
| 128 | */ | |
| 129 | onDocumentDetailsAvailable: function DocumentPath_onDocumentDetailsAvailable(layer, args) | |
| 130 | { | |
| 131 | var docData = args[1]; | |
| 132 | var pathHtml = ""; | |
| 133 | var rootLinkUrl = Alfresco.constants.URL_PAGECONTEXT + "site/" + this.options.siteId + "/documentlibrary"; | |
| 134 | var baseLinkUrl = Alfresco.constants.URL_PAGECONTEXT + "site/" + this.options.siteId + "/documentlibrary{file}#path="; | |
| 135 | var pathUrl = "/"; | |
| 136 | ||
| 137 | // create an array of paths | |
| 138 | var path = docData.location.path; | |
| 139 | if (path.length < 2) | |
| 140 | { | |
| 141 | pathHtml += '<span class="path-link"><a href="' + YAHOO.lang.substitute(baseLinkUrl, | |
| 142 | { | |
| 143 | file: "?file=" + docData.fileName | |
| 144 | }); | |
| 145 | pathHtml += '">' + Alfresco.util.message("path.documents", this.name) + '</a></span>'; | |
| 146 | } | |
| 147 | else | |
| 148 | { | |
| 149 | // Document Library root node | |
| 150 | pathHtml += '<span class="path-link"><a href="' + rootLinkUrl + Alfresco.util.message("path.documents", this.name) + '</a></span>'; | |
| 151 | ||
| 152 | var folders = path.substring(1, path.length).split("/"); | |
| 153 | ||
| 154 | if (folders.length > 0) | |
| 155 | { | |
| 156 | pathHtml += '<span class="separator"> > </span>'; | |
| 157 | } | |
| 158 | ||
| 159 | for (var x = 0, y = folders.length; x < y; x++) | |
| 160 | { | |
| 161 | pathUrl += folders[x]; | |
| 162 | ||
| 163 | pathHtml += '<img src="' + Alfresco.constants.URL_CONTEXT + '/components/documentlibrary/images/folder-closed-16.png" alt="folder" />'; | |
| 164 | pathHtml += '<span class="path-link"><a href="' + YAHOO.lang.substitute(baseLinkUrl, | |
| 165 | { | |
| 166 | file: (y - x > 1) ? "" : "?file=" + docData.fileName | |
| 167 | }); | |
| 168 | pathHtml += this._encodePath(pathUrl) + '">' + $html(folders[x]) + '</a></span>'; | |
| 169 | ||
| 170 | if (y - x > 1) | |
| 171 | { | |
| 172 | pathHtml += '<span class="separator"> > </span>'; | |
| 173 | pathUrl += "/"; | |
| 174 | } | |
| 175 | } | |
| 176 | } | |
| 177 | ||
| 178 | Dom.setStyle(this.id + "-defaultPath", "display", "none"); | |
| 179 | Dom.get(this.id + "-path").innerHTML = pathHtml; | |
| 180 | }, | |
| 181 | ||
| 182 | /** | |
| 183 | * Encodes the given path for use on a URL | |
| 184 | * | |
| 185 | * @method _encodePath | |
| 186 | * @param path The path to encode | |
| 187 | * @return The encoded path | |
| 188 | */ | |
| 189 | _encodePath: function DocumentPath__encodePath(path) | |
| 190 | { | |
| 191 | var encodedPath = (YAHOO.env.ua.gecko) ? encodeURIComponent(path) : path; | |
| 192 | ||
| 193 | return encodedPath; | |
| 181 | 194 | } |
| 182 | 195 | }; |
| 183 | 196 | })(); |