edited by Vincent Massol
on 2012/01/11
on 2012/01/11
Change comment:
Imported from XAR
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. VincentMassol1 +XWiki.Admin - Content
-
... ... @@ -2,7 +2,6 @@ 2 2 $xwiki.ssx.use('ExtensionManagerMacros') 3 3 $xwiki.jsx.use('ExtensionManagerMacros') 4 4 #set ($extensionManager = $services.extension) 5 -#set ($versionManager = $extensionManager.versionManager) 6 6 #if ($request.extensionwiki && $request.extensionwiki.trim() != '') 7 7 #set($extensionwiki = $request.extensionwiki) 8 8 #set($extensionnamespace = "wiki:${extensionwiki}") ... ... @@ -12,13 +12,35 @@ 12 12 (% class="extHeader" %)((( 13 13 (% class="extHeaderLeft" %)((( 14 14 {{html}} 15 - <form action="$doc.getURL($xcontext.action, $request.getQueryString().replaceAll('(^|&)actionshowdetails=[^&]++&?', '$1').replaceAll('(^|&)(extension(id|version)=[^&]++&?+)+', '$1').replaceAll('(^|&)section=[^&]++', '$1section=XWiki.AddExtensions').replaceAll('(^|&)searchextension=[^&]++&?', '$1'))" method="post"> 14 + <form class="xform half" action="$doc.getURL($xcontext.action, $request.getQueryString().replaceAll('(^|&)actionshowdetails=[^&]++&?', '$1').replaceAll('(^|&)(extension(id|version)=[^&]++&?+)+', '$1').replaceAll('(^|&)section=[^&]++', '$1section=XWiki.AddExtensions').replaceAll('(^|&)searchextension=[^&]++&?', '$1'))" method="post"> 16 16 <div class="globalsearch extHeaderLeftSearch"> 17 - <label class=" hidden" for="extensionsearchinput">Search</label><input type="text" class="globalsearchinput#if ("$!request.searchextension" == '') withTip#end extHeaderLeftInput" id="extensionsearchinput" name="searchextension" value="#if ("$!request.searchextension" != '')$request.searchextension#{else}searchextension...#{end}" size="60"><input type="image" class="button" value="Go" alt="Go" src="/xwiki/resources/icons/xwiki/search.png">16 + <label class="label" for="extensionsearchinput">$msg.get('extensions.search.title')</label><input type="text" class="globalsearchinput#if ("$!request.searchextension" == '') withTip#end extHeaderLeftInput" id="extensionsearchinput" name="searchextension" value="#if ("$!request.searchextension" != '')${request.searchextension}#{else}$msg.get('extensions.search.tip')#{end}" size="60"><input type="image" class="button" value="$msg.get('panels.search.submit')" alt="$msg.get('panels.search.submit')" src="$xwiki.getSkinFile('icons/xwiki/search.png')"> 18 18 </div> 19 19 </form> 20 20 {{/html}} 21 21 ))) 21 + (% class="extHeaderRight" %)((( 22 + ## Advanced search form 23 + {{html clean="false"}} 24 + <form action="$escapetool.xml($doc.getURL($xcontext.action, $request.getQueryString()))" method="post" class="xform"> 25 + <fieldset id="advancedextensionsearch"> 26 + <div id="advancedextensionsearch-body"></div> 27 + <legend><a href="#advancedextensionsearch-body">$msg.get('extensions.advancedSearch.title')</a></legend> 28 + <div class="plainmessage advancedsearchpopup hidden"> 29 + <input type="hidden" name="xback" value="$escapetool.xml($doc.getURL($xcontext.action, $request.queryString))" /> 30 + <dl> 31 + <dt><label for="advancedextensionsearch-id">$msg.get('extensions.advancedSearch.id.label')</label></dt> 32 + <dd><input type="text" name="extensionid" id="advancedextensionsearch-id" value="" /></dd> 33 + <dt><label for="advancedextensionsearch-version">$msg.get('extensions.advancedSearch.version.label')</label></dt> 34 + <dd><input type="text" name="extensionversion" id="advancedextensionsearch-version" value="" /></dd> 35 + </dl> 36 + <p><span class="buttonwrapper"><input type="submit" name="actioninstall" value="$msg.get('extensions.advancedSearch.actions.submit')" class="button" /></span> 37 + <span class="buttonwrapper"><a href="#searchextension" class="actioncancel secondary button">$msg.get('extensions.advancedSearch.actions.cancel')</a></span></p> 38 + </div> 39 + </fieldset> 40 + </form> 41 + {{/html}} 42 + ))) 22 22 (% class="clearfloats" %)((())) 23 23 ))) 24 24 #end ... ... @@ -59,10 +59,10 @@ 59 59 60 60 #if ($extension.authors.size() > 0) 61 61 (% class="extension-authors" %)((( 62 - $msg.get(' by:') ##83 + $msg.get('extensions.info.authors') ## 63 63 #foreach ($author in $extension.authors) 64 64 #if ($author.name == 'devs') 65 - [[$msg.get(' XWiki Development Team')>>http://www.xwiki.org/]]##86 + [[$msg.get('extensions.info.authors.xwikiorg')>>http://www.xwiki.org/]]## 66 66 #elseif ("$!author.url" != '' && "$!author.name" != '') 67 67 [[${author.name}>>${author.url}]]## 68 68 #else ... ... @@ -69,8 +69,7 @@ 69 69 ${author.name}## 70 70 #end 71 71 #if ($foreach.hasNext), ## 72 - #else 73 - ))) 93 + #else ))) 74 74 75 75 #end 76 76 #end ... ... @@ -91,12 +91,12 @@ 91 91 #end 92 92 (% class="extension-body" %)((( 93 93 (% class="innerMenu" %) 94 - * [[ Description>>||anchor="extension-body-description-${extension.id.id}-${extension.id.version}"]]114 + * [[$msg.get('extensions.info.category.description')>>||anchor="extension-body-description-${extension.id.id}-${extension.id.version}"]] 95 95 #if ("$!{extension.releaseNotes}" != '') 96 - * [[ Release116 + * [[$msg.get('extensions.info.category.releaseNotes')>>||anchor="extension-body-relnotes-${extension.id.id}-${extension.id.version}"]] 97 97 #end 98 98 #if ($extension.dependencies.size() > 0 || $backwardDependencies.size() > 0) 99 - * [[ Dependencies>>||anchor="extension-body-dependencies-${extension.id.id}-${extension.id.version}"]]119 + * [[$msg.get('extensions.info.category.dependencies')>>||anchor="extension-body-dependencies-${extension.id.id}-${extension.id.version}"]] 100 100 #end 101 101 102 102 {{id name="extension-body-description-${extension.id.id}-${extension.id.version}" /}} ... ... @@ -145,16 +145,16 @@ 145 145 (% class="extension-body-dependencies extension-body-section" %)((( 146 146 $msg.get('extensions.info.dependencies.directDependencies', [$extension.dependencies.size()]) 147 147 #foreach ($dependency in $extension.dependencies) 148 - #set ($dependencyExtension = $extensionManager.resolve($dependency .id, $dependency.version))168 + #set ($dependencyExtension = $extensionManager.resolve($dependency)) 149 149 #set ($dependencyClass = "$!{dependencyExtension.class}") 150 150 #if ($dependencyExtension) 151 151 * [[#displayExtensionName($dependencyExtension)>>## 152 152 #if ($dependencyClass.endsWith('CoreExtension')) 153 - path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.version}§ion=XWiki.CoreExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-core"]] 173 + path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.versionConstraint}§ion=XWiki.CoreExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-core"]] 154 154 #elseif ($dependencyClass.endsWith('LocalExtension')) 155 - path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.version}§ion=XWiki.InstalledExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-installed"]] 175 + path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.versionConstraint}§ion=XWiki.InstalledExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-installed"]] 156 156 #else 157 - path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.version}§ion=XWiki.AddExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-remote"]] 177 + path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id}&extensionversion=${dependency.versionConstraint}§ion=XWiki.AddExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-remote"]] 158 158 #end 159 159 #else 160 160 * (% class="dependency-type-unknown" %)${dependency.id} ... ... @@ -176,7 +176,7 @@ 176 176 path:$doc.getURL($xcontext.action, "actionshowdetails=true&extensionid=${dependency.id.id}&extensionversion=${dependency.id.version}§ion=XWiki.AddExtensions&xback=${escapetool.url($xback)}")||class="dependency-type-remote"]]## 177 177 #end 178 178 #if ("$!{namespace.key}" != '') 179 - (in 199 + $msg.get('extensions.info.dependency.wiki', [$namespace.key]) 180 180 #else 181 181 182 182 #end ... ... @@ -188,30 +188,6 @@ 188 188 ))) 189 189 #end 190 190 191 -#macro (prepareInstall $extensionid $extensionversion $extensionsToInstall $extensionsToUpgrade $extensionsSuggested $coreExtensionsConflicts) 192 - #set ($extension = $extensionManager.resolve($extensionid, $extensionversion)) 193 - #set ($extensionclass = "${extension.class}") 194 - #if (!$extensionclass.endsWith('CoreExtension')) 195 - #if (!$extension.isInstalled($extensionwiki)) 196 - #set($installedExtension = $extensionManager.getInstalledExtension($extensionid, $extensionwiki)) 197 - #if ($installedExtension && $versionManager.compareVersions($installedExtension.id.version, $extensionversion) > 0) 198 - #set($extensionsToUpgrade[$extension.id] = $extension) 199 - #else 200 - #set($extensionsToInstall[$extension.id] = $extension) 201 - #end 202 - #prepareInstallDependencies($extension, $extensionsToInstall, $extensionsToUpgrade, $extensionsSuggested, $coreExtensionsConflicts) 203 - #end 204 - #elseif ($versionManager.compareVersions($extensionversion, $extension.id.version) > 0) 205 - #set($coreExtensionsConflicts[$extension.id] = [$extension, $extensionversion]) 206 - #end 207 -#end 208 - 209 -#macro (prepareInstallDependencies $extension $extensionsToInstall $extensionsToUpgrade $extensionsSuggested $coreExtensionsConflicts) 210 - #foreach ($dependency in $extension.dependencies) 211 - #prepareInstall($dependency.id, $dependency.version, $extensionsToInstall, $extensionsToUpgrade, $extensionsSuggested, $coreExtensionsConflicts) 212 - #end 213 -#end 214 - 215 215 #macro (printThrowable $throwable) 216 216 $throwable.class: #if(!$throwable.message)null#else$throwable.message#end 217 217 ... ... @@ -224,7 +224,11 @@ 224 224 #end 225 225 226 226 #macro (printJobLog $job) 227 - #foreach ($log in $job.status.log) 223 + #printStatusLog($job.status) 224 +#end 225 + 226 +#macro (printStatusLog $status) 227 + #foreach ($log in $status.log) 228 228 #set ($logLevel = $log.level.toString().toLowerCase()) 229 229 {{$logLevel}} 230 230 $log.formattedMessage ... ... @@ -235,20 +235,6 @@ 235 235 #end 236 236 #end 237 237 238 -#macro (prepareUninstall $extensionid $extensionversion $extensionsToUninstall) 239 - #set ($discard = $extensionsToUninstall.add("${extensionid}-${extensionversion}")) 240 - #set ($backwardDependencies = $extensionManager.getBackwardDependencies($extensionid, $extensionversion)) 241 - #prepareUninstallBackwardDependencies($backwardDependencies, $extensionsToUninstall) 242 -#end 243 - 244 -#macro(prepareUninstallBackwardDependencies $backwardDependencies $extensionsToUninstall) 245 - #foreach ($backwardDependencyMap in $backwardDependencies.values()) 246 - #foreach ($backwardDependency in $backwardDependencyMap) 247 - #prepareUninstall($backwardDependency.id.id, $backwardDependency.id.version, $extensionsToUninstall) 248 - #end 249 - #end 250 -#end 251 - 252 252 #macro(computeXBack) 253 253 #set ($xback = "$!{request.xback}") 254 254 #if ($xback == '')
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -19,6 +19,7 @@ 19 19 */ 20 20 initialize : function () { 21 21 $$(this.extensionItemSelector + " form input[name='actionshowdetails']").invoke("observe", "click", this.loadExtensionDetails.bindAsEventListener(this)); 22 + this.prepareAdvancedInstall(); 22 22 }, 23 23 /** 24 24 * Ajax loading of Extension details ... ... @@ -25,6 +25,7 @@ 25 25 */ 26 26 loadExtensionDetails : function(event) { 27 27 var form = event.element().form; 29 + var originalAction = form.action; 28 28 29 29 event.stop(); 30 30 // Ignore consecutive requests, just handle the first one ... ... @@ -68,6 +68,7 @@ 68 68 var newExtensionItem = originalExtensionItem.next(); 69 69 originalExtensionItem.remove(); 70 70 // Attach behavior to the new element 73 + newExtensionItem.down('form').action = originalAction; 71 71 this.addExtensionElementBehavior(newExtensionItem); 72 72 }.bind(this), 73 73 onFailure : function (response) { ... ... @@ -84,7 +84,9 @@ 84 84 // In the end: re-enable the button 85 85 form.__disabled = false; 86 86 // Remove the loading marker if it's still there (i.e. fetching failed) 87 - form.down(".extension-body.loading").remove(); 90 + if (form && form.down(".extension-body.loading")) { 91 + form.down(".extension-body.loading").remove(); 92 + } 88 88 } 89 89 } 90 90 ); ... ... @@ -148,6 +148,35 @@ 148 148 $(menuLink.getAttribute('href').substring(1)).next(this.extensionDetailsSectionSelector).setStyle({'display' : 'block'}); 149 149 // ... also marking the clicked menu item as current 150 150 menuLink.up(this.extensionMenuItemSelector).addClassName(this.crtExtensionMenuItemMarker); 156 + }, 157 + 158 + prepareAdvancedInstall : function() { 159 + var advancedSearchBox = $('advancedextensionsearch'); 160 + if (!advancedSearchBox) { 161 + return; 162 + } 163 + var advancedSearchTrigger = advancedSearchBox.down('legend a');//ry :) 164 + if (advancedSearchTrigger) { 165 + var target = advancedSearchTrigger.up('legend').next(); 166 + if (target) { 167 + advancedSearchTrigger.observe('click', function(event) { 168 + event.stop(); 169 + advancedSearchTrigger.blur(); 170 + target.toggleClassName('hidden'); 171 + advancedSearchTrigger.toggleClassName('expanded'); 172 + }); 173 + var cancelTrigger = target.down('a.actioncancel'); 174 + if (cancelTrigger) { 175 + cancelTrigger.observe('click', function(event) { 176 + event.stop(); 177 + cancelTrigger.up('form').select('input[type=text]').each(function(input) { 178 + input.value = ''; 179 + }); 180 + advancedSearchTrigger.click(); 181 + }); 182 + } 183 + } 184 + } 151 151 } 152 152 }); 153 153
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -23,7 +23,7 @@ 23 23 font-size: 1.2em; 24 24 font-weight: 700; 25 25 border: none; 26 - background: url("$xwiki.getSkinFile('icons/silk/cog.g if')") no-repeat scroll 0.2em 0.3em transparent;26 + background: url("$xwiki.getSkinFile('icons/silk/cog.png')") no-repeat scroll 0.2em 0.3em transparent; 27 27 margin: 0 0 0 -1.8em; 28 28 padding: 2px 0 2px 1.8em; 29 29 } ... ... @@ -65,6 +65,8 @@ 65 65 66 66 .extension-description { 67 67 font-size: .9em; 68 + white-space: pre-wrap; 69 + word-wrap: break-word; 68 68 } 69 69 .extension-body { 70 70 background-color: $theme.highlightColor; ... ... @@ -107,33 +107,46 @@ 107 107 list-style-type: none; 108 108 } 109 109 .dependency-type-core { 110 - background-image: url("$xwiki.getSkinFile('icons/silk/cog.g if')");112 + background-image: url("$xwiki.getSkinFile('icons/silk/cog.png')"); 111 111 } 112 112 .dependency-type-installed { 113 - background-image: url("$xwiki.getSkinFile('icons/silk/plugin.g if')");115 + background-image: url("$xwiki.getSkinFile('icons/silk/plugin.png')"); 114 114 } 115 115 .dependency-type-remote { 116 - background-image: url("$xwiki.getSkinFile('icons/silk/world.g if')");118 + background-image: url("$xwiki.getSkinFile('icons/silk/world.png')"); 117 117 } 118 118 .dependency-type-unknown { 119 - background-image: url("$xwiki.getSkinFile('icons/silk/plugin_error.g if')");121 + background-image: url("$xwiki.getSkinFile('icons/silk/plugin_error.png')"); 120 120 } 121 121 122 -#advancedextensionsearch div { 123 - display: none; 124 -} 125 125 #advancedextensionsearch legend { 126 - font-size: .8em; 125 + font-size: .875em; 126 + margin: 0; 127 + border: 0 none; 128 + text-align: right; 127 127 } 130 + 128 128 #advancedextensionsearch legend a:after { 129 - content: " >>";132 + content: " \bb"; 130 130 } 134 +#advancedextensionsearch legend a.expanded:after { 135 + color: transparent; 136 +} 131 131 #advancedextensionsearch-body { 132 132 display: none; 133 133 } 134 -#advancedextensionsearch-body:target ~ div { 140 +#advancedextensionsearch-body:target ~ div.hidden { 135 135 display: block; 136 136 } 143 +div.advancedsearchpopup { 144 + box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); 145 + padding: .3em .5em; 146 + position: absolute; 147 + right: 0; 148 + text-align: left; 149 + width: 95%; 150 + z-index: 200; 151 +} 137 137 /****************************** <Inner Menu> *************************/ 138 138 139 139 .innerMenu { ... ... @@ -309,7 +309,7 @@ 309 309 } 310 310 311 311 .changedRight { 312 - background: url(" /xwiki/resources/icons/silk/bullet_black.gif") no-repeat scroll 0 center transparent;327 + background: url("$xwiki.getSkinFile('icons/silk/bullet_black.png')") no-repeat scroll 0 center transparent; 313 313 font-weight: bold; 314 314 } 315 315 ... ... @@ -343,7 +343,15 @@ 343 343 344 344 .extHeaderLeft { 345 345 float: left; 361 + width: 50%; 346 346 } 363 +.extHeaderLeft .xform label { 364 + display: block; 365 + font-weight: bold; 366 +} 367 +.extHeaderLeft .xform .globalsearch { 368 + text-align: left; 369 +} 347 347 348 348 .extHeaderBottom .extHeaderLeft{ 349 349 padding-left: 2.5em; ... ... @@ -354,6 +354,8 @@ 354 354 float: right; 355 355 cursor: pointer; 356 356 margin: 3px 0 -3px; 380 + position: relative; 381 + width: 40%; 357 357 } 358 358 359 359 .extHeaderBottom .extHeaderRight { ... ... @@ -368,7 +368,7 @@ 368 368 } 369 369 370 370 .type { 371 - background: url(" /xwiki/resources/icons/silk/bricks.gif") no-repeat scroll 0 0 transparent;396 + background: url("$xwiki.getSkinFile('icons/silk/bricks.png')") no-repeat scroll 0 0 transparent; 372 372 } 373 373 374 374 .extFilter { ... ... @@ -442,23 +442,23 @@ 442 442 } 443 443 444 444 .typeApp{ 445 - background-image: url(" /xwiki/resources/icons/silk/application.gif");470 + background-image: url("$xwiki.getSkinFile('icons/silk/application.png')"); 446 446 } 447 447 448 448 .typeModule{ 449 - background-image: url(" /xwiki/resources/icons/silk/connect.gif");474 + background-image: url("$xwiki.getSkinFile('icons/silk/connect.png')"); 450 450 } 451 451 452 452 .typeSkin{ 453 - background-image: url(" /xwiki/resources/icons/silk/layout_content.gif");478 + background-image: url("$xwiki.getSkinFile('icons/silk/layout_content.png')"); 454 454 } 455 455 456 456 .typeMacro{ 457 - background-image: url(" /xwiki/resources/icons/silk/cog.gif");482 + background-image: url("$xwiki.getSkinFile('icons/silk/cog.png')"); 458 458 } 459 459 460 460 .typePlugin{ 461 - background-image: url(" /xwiki/resources/icons/silk/plugin.gif");486 + background-image: url("$xwiki.getSkinFile('icons/silk/plugin.png')"); 462 462 } 463 463 464 464 .extItem.statusInstalled {