first commit
This commit is contained in:
commit
1218dd1517
12716 files changed
+989233
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 808 B |
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><title>module-extensionmanager</title><g fill="none" fill-rule="evenodd"><path d="M0 0h64v64H0z" fill="#F08D34"/><path d="M33.018 27.928l10.897-3.8A1 1 0 1 1 44.618 26L34 29.703V42.93c0 .589-.448 1.066-1 1.066s-1-.477-1-1.066V29.687l-10.67-3.815a1 1 0 1 1 .702-1.873l10.986 3.929zm.454-12a1.83 1.83 0 0 0-.944 0L16.472 21.05a.712.712 0 0 0-.472.643v20.633c0 .271.215.56.472.642l16.056 5.122c.26.083.687.082.944 0l16.056-5.122a.712.712 0 0 0 .472-.642V21.692a.723.723 0 0 0-.472-.643l-16.056-5.12z" fill="#FFF"/></g></svg>
|
||||
|
After Width: | Height: | Size: 581 B |
@@ -0,0 +1,23 @@
|
||||
<svg width="600" height="450" viewBox="0 0 600 450" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5">
|
||||
<path fill="url(#a)" d="M0 0h600v450H0z"/>
|
||||
<path d="M374 384.829L629 290l-130-53-312 126" fill="url(#b)"/>
|
||||
<path d="M374 72v312.829L413 362V96l-39-24z" fill="#f7f7f7"/>
|
||||
<path d="M187 96l187-23v311.829L187 363V96z" fill="#fff"/>
|
||||
<path d="M187 96v267l187 21.829L413 362V96l-39-23-187 23z" fill="none" stroke="#969696" stroke-width="2"/>
|
||||
<path d="M291.466 305.869v-22.591l-22.591-2.759v22.591l22.591 2.759zm27.335-122.653c0-41.306-18.567-41.314-40.212-40.637-8.189.255-19.428 1.886-25.302 2.524v16.492c7.003-.5 18.299-1.38 27.561-.249 11.295 1.379 18.75 6.808 18.75 21.492 0 14.684-.903 16.155-15.587 31.757l-13.555 14.384v27.335l19.202 2.345v-23.687l12.199-12.969c15.136-15.998 16.944-21.166 16.944-38.787z" fill="#ccc" fill-rule="nonzero"/>
|
||||
<g fill-rule="nonzero">
|
||||
<path d="M388.788 360.247v8.369l-.813.47v-8.37l-1.44.831v-1.019l3.692-2.132v1.019l-1.439.832zm4.362 1.491v4.36l-.842.486v-4.36l-1.672-4.064.897-.517 1.233 3.082 1.234-4.507.851-.491-1.701 6.011zm4.224-1.62l-.785.453v3.541l-.814.47v-9.389s.805-.559 1.581-1.007c1.42-.82 1.831.204 1.831 1.853 0 2.039-.486 3.313-1.813 4.079m.093-5.03a7.66 7.66 0 0 0-.878.588v3.915l.878-.507c.524-.303.889-1.009.889-2.471 0-1.342-.226-1.908-.889-1.525m4.655 5.923c-1.542.89-1.953-.482-1.953-3.767 0-3.153.412-4.92 1.953-5.81 1.542-.89 1.953.402 1.953 3.555 0 3.285-.411 5.132-1.953 6.022m0-8.598c-.84.485-1.121 1.466-1.121 4.417 0 2.883.281 3.688 1.121 3.203.841-.486 1.121-1.615 1.121-4.497 0-2.951-.28-3.608-1.121-3.123m4.299 6.116c-.458.264-1.139.457-1.225.478v-.978c.225-.063.804-.259 1.216-.497.476-.274.785-1.033.785-2.067 0-1.219-.139-1.783-.803-1.399l-.767.442v-.98l.672-.388c.759-.438.794-1.572.794-2.107 0-1.061-.232-1.356-.699-1.086-.411.237-.88.655-1.15.892v-.979c.102-.086.655-.606 1.13-.881.963-.556 1.515-.284 1.515 1.715 0 .912-.225 1.846-.721 2.388.571-.275.832.472.832 1.786 0 1.999-.542 3.062-1.579 3.661"/>
|
||||
<path d="M382.618 368.303a1.666 1.666 0 0 1-.375.293c-1.13.652-2.789-4.056-2.789-5.942 0-.694.115-.991.276-1.284-1.382 1.03-3.042 2.717-3.572 3.949-.115.298-.184.702-.184 1.165 0 2.943 2.189 8.359 3.733 7.468.715-.413 1.92-2.794 2.911-5.649m-.721-8.381c1.428-.825 2.858-1.32 2.858-.162 0 2.348-1.038 5.793-1.567 6.099-.945.545-2.121-2.548-2.121-4.433 0-.86.231-1.158.83-1.504" fill="#ff8700"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="a" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(36.9) scale(750)">
|
||||
<stop offset="0" stop-color="#fff"/>
|
||||
<stop offset="1" stop-color="#e6e6e6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="b" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(53.626 -3.606 595.823) scale(98.3078)">
|
||||
<stop offset="0" stop-color="#fff" stop-opacity="0"/>
|
||||
<stop offset=".48" stop-color="#3b3b3b" stop-opacity=".039"/>
|
||||
<stop offset="1" stop-opacity=".051"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
|
||||
<g>
|
||||
<circle fill="#FF8700" cx="32" cy="32" r="32"/>
|
||||
<circle fill="#FFFFFF" cx="32" cy="32" r="18"/>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M10.9,28.7c-0.1,0.4-0.2,0.8-0.4,1.2c-0.2,0.3-0.5,0.6-0.8,0.8c-0.3,0.2-0.7,0.4-1.2,0.4
|
||||
c-0.5,0.1-0.9,0.1-1.5,0c-0.5-0.1-1-0.2-1.4-0.4c-0.4-0.2-0.7-0.5-1-0.8c-0.2-0.3-0.4-0.7-0.5-1.1C4,28.5,4,28.1,4,27.6
|
||||
c0.1-0.4,0.2-0.8,0.4-1.2c0.2-0.3,0.5-0.6,0.8-0.8c0.3-0.2,0.7-0.4,1.2-0.4c0.4-0.1,0.9-0.1,1.5,0c0.5,0.1,1,0.2,1.4,0.4
|
||||
c0.4,0.2,0.7,0.5,1,0.8c0.3,0.3,0.4,0.7,0.5,1.1C11,27.8,11,28.2,10.9,28.7z M9.6,28.5c0.1-0.5-0.1-0.8-0.4-1.2
|
||||
c-0.3-0.3-0.9-0.5-1.5-0.6c-0.7-0.1-1.2-0.1-1.6,0.2c-0.4,0.2-0.7,0.5-0.7,1c-0.1,0.5,0.1,0.8,0.4,1.2c0.3,0.3,0.8,0.5,1.5,0.6
|
||||
c0.7,0.1,1.2,0.1,1.7-0.1S9.6,28.9,9.6,28.5z"/>
|
||||
<path fill="#FFFFFF" d="M11.7,24.9l-6.1-2.8l1.7-3.9l1.2,0.5l-1.1,2.5l1.4,0.6l1-2.1l1.2,0.5l-1,2.1l2.4,1.1L11.7,24.9z"/>
|
||||
<path fill="#FFFFFF" d="M13.8,20.4l-5.3-4.1l2.6-3.4l1,0.8l-1.7,2.2l1.2,1l1.4-1.8l1,0.8l-1.4,1.8l2.1,1.6L13.8,20.4z"/>
|
||||
<path fill="#FFFFFF" d="M17.1,16.5l-4.5-5l1.1-1l4.5,5L17.1,16.5z"/>
|
||||
<path fill="#FFFFFF" d="M21.6,13.3c-0.4,0.2-0.8,0.4-1.2,0.4c-0.4,0.1-0.8,0-1.2-0.1c-0.4-0.1-0.8-0.3-1.1-0.6
|
||||
c-0.4-0.3-0.7-0.7-1-1.2c-0.3-0.5-0.5-0.9-0.5-1.4c-0.1-0.5-0.1-0.9,0-1.3c0.1-0.4,0.3-0.8,0.5-1.1c0.3-0.3,0.6-0.6,0.9-0.8
|
||||
c0.4-0.2,0.8-0.3,1.1-0.4c0.4,0,0.7,0,1,0.1l-0.2,1.2c-0.2,0-0.4-0.1-0.7-0.1c-0.2,0-0.4,0.1-0.6,0.2c-0.2,0.1-0.4,0.3-0.5,0.5
|
||||
s-0.2,0.4-0.2,0.6c0,0.2,0,0.5,0,0.8c0.1,0.3,0.2,0.6,0.4,0.8c0.4,0.6,0.8,1,1.2,1.2s0.9,0.1,1.3-0.1c0.2-0.1,0.4-0.3,0.5-0.5
|
||||
c0.1-0.2,0.2-0.4,0.3-0.7l1.2,0.4C22.9,12.2,22.4,12.9,21.6,13.3z"/>
|
||||
<path fill="#FFFFFF" d="M24.1,12l-2.3-6.3l1.4-0.5l2.3,6.3L24.1,12z"/>
|
||||
<path fill="#FFFFFF" d="M25.9,11.2l1.1-7L28.8,4l3.1,6.3l-1.6,0.2L29.6,9l-2,0.3L27.4,11L25.9,11.2z M27.8,7.5l-0.1,0.6l1.4-0.2
|
||||
l-0.2-0.6c-0.1-0.3-0.3-0.7-0.4-1c-0.1-0.4-0.3-0.7-0.4-1l0,0c0,0.4-0.1,0.7-0.1,1.1C27.9,6.7,27.8,7.1,27.8,7.5z"/>
|
||||
<path fill="#FFFFFF" d="M32.2,10.4l0.6-6.7l1.5,0.1l-0.5,5.4l2.7,0.2l-0.1,1.3L32.2,10.4z"/>
|
||||
<path fill="#FFFFFF" d="M40.1,12.1l2.2-5l-1.7-0.8l0.5-1.2l4.8,2.1l-0.5,1.2l-1.7-0.8l-2.2,5L40.1,12.1z"/>
|
||||
<path fill="#FFFFFF" d="M44.5,14.5l1.5-1.9l1-4.7l1.3,1l-0.5,1.6c-0.1,0.3-0.2,0.5-0.2,0.8c-0.1,0.2-0.2,0.5-0.2,0.8l0,0
|
||||
c0.2-0.1,0.5-0.3,0.7-0.4c0.2-0.1,0.4-0.3,0.7-0.4l1.4-0.9l1.3,1l-4.2,2.2l-1.5,1.9L44.5,14.5z"/>
|
||||
<path fill="#FFFFFF" d="M47.5,16.8l5.3-4.2l1.4,1.8c0.2,0.3,0.4,0.6,0.6,0.9c0.1,0.3,0.2,0.6,0.2,0.9c0,0.3,0,0.6-0.2,0.9
|
||||
c-0.1,0.3-0.4,0.6-0.7,0.8c-0.3,0.2-0.6,0.4-0.9,0.5c-0.3,0.1-0.6,0.1-0.9,0c-0.3-0.1-0.6-0.2-0.8-0.4c-0.3-0.2-0.5-0.4-0.7-0.7
|
||||
l-0.5-0.7L48.4,18L47.5,16.8z M51.1,15.9l0.5,0.6c0.5,0.6,1.1,0.7,1.6,0.3c0.3-0.2,0.4-0.5,0.4-0.7s-0.2-0.6-0.4-0.9l-0.4-0.5
|
||||
L51.1,15.9z"/>
|
||||
<path fill="#FFFFFF" d="M51.8,23.9c-0.2-0.4-0.3-0.8-0.2-1.2s0.1-0.8,0.3-1.2s0.4-0.7,0.8-1c0.3-0.3,0.8-0.6,1.3-0.8
|
||||
c0.5-0.2,1-0.3,1.4-0.4c0.5,0,0.9,0,1.2,0.2s0.7,0.4,1,0.6s0.5,0.6,0.7,1.1c0.2,0.4,0.3,0.8,0.3,1.2c0,0.4-0.1,0.8-0.3,1.1
|
||||
c-0.2,0.4-0.4,0.7-0.8,1c-0.3,0.3-0.8,0.6-1.3,0.8c-0.5,0.2-1,0.3-1.4,0.4c-0.5,0-0.9,0-1.3-0.2s-0.7-0.3-1-0.6
|
||||
S52,24.3,51.8,23.9z M53,23.4c0.2,0.4,0.5,0.7,1,0.8c0.5,0.1,1,0,1.6-0.2c0.6-0.3,1.1-0.6,1.3-1c0.2-0.4,0.3-0.8,0.1-1.2
|
||||
c-0.2-0.4-0.5-0.7-0.9-0.8c-0.5-0.1-1,0-1.6,0.2c-0.6,0.3-1.1,0.6-1.3,1S52.9,23,53,23.4z"/>
|
||||
<path fill="#FFFFFF" d="M53.2,29.2c-0.1-0.5,0-1,0.1-1.4c0.1-0.4,0.3-0.7,0.6-1l1,0.6c-0.2,0.2-0.3,0.5-0.4,0.7
|
||||
c-0.1,0.3-0.1,0.5-0.1,0.8c0,0.3,0.1,0.6,0.3,0.7c0.2,0.2,0.4,0.2,0.6,0.2c0.1,0,0.3-0.1,0.4-0.1c0.1-0.1,0.2-0.2,0.3-0.3
|
||||
c0.1-0.1,0.1-0.3,0.1-0.6c0-0.2,0-0.5,0-0.9l1.1-0.1c0,0.3,0.1,0.5,0.1,0.7c0.1,0.2,0.1,0.3,0.2,0.5s0.2,0.2,0.3,0.2
|
||||
c0.1,0,0.2,0,0.4,0c0.2,0,0.4-0.1,0.5-0.3c0.1-0.2,0.1-0.4,0.1-0.6c0-0.2-0.1-0.4-0.2-0.6c-0.1-0.2-0.3-0.4-0.5-0.5l0.8-0.9
|
||||
c0.3,0.3,0.5,0.6,0.7,0.9s0.3,0.7,0.4,1.1c0,0.3,0,0.6,0,0.9c0,0.3-0.1,0.5-0.3,0.7s-0.3,0.4-0.5,0.5c-0.2,0.1-0.5,0.2-0.7,0.3
|
||||
c-0.3,0-0.6,0-0.9-0.2c-0.3-0.2-0.5-0.4-0.7-0.7l0,0c-0.1,0.4-0.2,0.7-0.4,1s-0.6,0.4-1,0.5c-0.3,0-0.6,0-0.8-0.1
|
||||
c-0.3-0.1-0.5-0.3-0.7-0.5s-0.3-0.4-0.5-0.7C53.4,29.9,53.3,29.6,53.2,29.2z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M53.4,35.8l6.4,1.9l-0.5,1.8c-0.1,0.5-0.3,0.9-0.6,1.3c-0.2,0.4-0.5,0.6-0.9,0.8C57.4,41.9,57,42,56.6,42
|
||||
s-0.9,0-1.5-0.2c-0.6-0.2-1-0.4-1.4-0.7c-0.4-0.3-0.6-0.6-0.8-0.9c-0.2-0.4-0.3-0.7-0.3-1.2s0-0.9,0.2-1.3L53.4,35.8z M54.1,37.6
|
||||
L54,37.9c-0.1,0.3-0.1,0.5-0.1,0.8c0,0.2,0.1,0.5,0.2,0.7c0.1,0.2,0.3,0.4,0.5,0.6c0.2,0.2,0.6,0.3,0.9,0.4
|
||||
c0.4,0.1,0.7,0.2,1,0.2c0.3,0,0.5-0.1,0.7-0.2c0.2-0.1,0.4-0.3,0.5-0.5s0.2-0.4,0.3-0.7l0.1-0.3L54.1,37.6z"/>
|
||||
<path fill="#FFFFFF" d="M51.3,41.6l5.9,3.2l-0.7,1.3L50.6,43L51.3,41.6z"/>
|
||||
<path fill="#FFFFFF" d="M48.6,45.6c0.3-0.3,0.6-0.6,1-0.9c0.4-0.2,0.8-0.4,1.3-0.4l0.3,1.3c-0.3,0.1-0.6,0.2-0.9,0.3
|
||||
c-0.3,0.1-0.5,0.3-0.7,0.5c-0.2,0.2-0.3,0.5-0.3,0.7c0,0.2,0.1,0.4,0.2,0.5c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3,0
|
||||
s0.2-0.1,0.3-0.1c0.1-0.1,0.2-0.1,0.4-0.2l0.8-0.4c0.2-0.1,0.3-0.2,0.5-0.2s0.4-0.1,0.6-0.1c0.2,0,0.4,0,0.6,0.1s0.4,0.2,0.6,0.3
|
||||
c0.2,0.2,0.4,0.4,0.5,0.6c0.1,0.2,0.2,0.5,0.2,0.8c0,0.3,0,0.6-0.2,0.9s-0.3,0.6-0.5,0.8c-0.3,0.3-0.6,0.6-0.9,0.8
|
||||
s-0.7,0.3-1.1,0.4L51.5,50c0.3-0.1,0.5-0.1,0.7-0.3c0.2-0.1,0.4-0.3,0.6-0.5c0.2-0.2,0.3-0.4,0.3-0.6c0-0.2-0.1-0.3-0.2-0.5
|
||||
c-0.1-0.1-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0.1-0.3,0.1c-0.1,0.1-0.2,0.1-0.4,0.2L50.8,49
|
||||
c-0.4,0.2-0.8,0.3-1.1,0.3c-0.4,0-0.7-0.2-1.1-0.5c-0.2-0.2-0.4-0.4-0.5-0.6c-0.1-0.2-0.2-0.5-0.2-0.8c0-0.3,0-0.6,0.2-0.9
|
||||
C48.1,46.2,48.3,45.9,48.6,45.6z"/>
|
||||
<path fill="#FFFFFF" d="M45.6,48.7l3.3,4.4l1.5-1.1l0.8,1l-4.2,3.1l-0.8-1l1.5-1.1l-3.3-4.4L45.6,48.7z"/>
|
||||
<path fill="#FFFFFF" d="M42.3,51l2.5,6.2l-2.2,0.9c-0.3,0.1-0.7,0.2-1,0.3c-0.3,0.1-0.6,0.1-0.9,0c-0.3-0.1-0.5-0.2-0.8-0.4
|
||||
s-0.4-0.5-0.6-0.8c-0.2-0.5-0.2-0.9-0.2-1.3c0.1-0.4,0.3-0.7,0.5-1l-2.4-1.9l1.6-0.6l2.1,1.8l0.8-0.3l-0.9-2.2L42.3,51z M42.3,55
|
||||
l-0.7,0.3c-0.4,0.2-0.6,0.3-0.8,0.6c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.3,0.3,0.5,0.6,0.5c0.2,0,0.5,0,0.9-0.2l0.7-0.3L42.3,55z"/>
|
||||
<path fill="#FFFFFF" d="M36.7,53l1.2,6.6l-1.5,0.3l-1.2-6.6L36.7,53z"/>
|
||||
<path fill="#FFFFFF" d="M34,53.5l-0.1,6.7l-2.3,0c-0.4,0-0.7,0-1-0.1c-0.3-0.1-0.6-0.2-0.8-0.3c-0.2-0.1-0.4-0.3-0.5-0.5
|
||||
c-0.1-0.2-0.2-0.5-0.2-0.8c0-0.2,0-0.3,0.1-0.5s0.1-0.3,0.2-0.4c0.1-0.1,0.2-0.2,0.3-0.3s0.2-0.2,0.4-0.2v0
|
||||
c-0.2,0-0.3-0.1-0.5-0.2c-0.1-0.1-0.3-0.2-0.4-0.3C29.1,56.4,29,56.2,29,56c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.3,0.1-0.6,0.2-0.9
|
||||
c0.1-0.2,0.3-0.4,0.6-0.6c0.2-0.2,0.5-0.3,0.8-0.3c0.3-0.1,0.7-0.1,1-0.1L34,53.5z M32.5,54.7l-0.9,0c-0.8,0-1.3,0.3-1.3,0.9
|
||||
c0,0.3,0.1,0.5,0.3,0.6c0.2,0.1,0.5,0.2,0.9,0.2l0.9,0L32.5,54.7z M32.4,57.6l-0.7,0c-0.4,0-0.6,0.1-0.8,0.2
|
||||
c-0.2,0.1-0.3,0.3-0.3,0.6c0,0.3,0.1,0.4,0.2,0.6c0.2,0.1,0.4,0.2,0.8,0.2l0.7,0L32.4,57.6z"/>
|
||||
<path fill="#FFFFFF" d="M25.7,52.4c0.8,0.3,1.4,0.7,1.7,1.3s0.3,1.5-0.1,2.6l-1.1,3.5l-1.5-0.4l1.1-3.6c0.2-0.6,0.2-1.1,0.1-1.4
|
||||
c-0.1-0.3-0.4-0.5-0.7-0.6s-0.7-0.1-1,0.1c-0.3,0.2-0.5,0.6-0.7,1.2l-1.1,3.6l-1.4-0.4l1.1-3.5c0.3-1.1,0.8-1.8,1.4-2.2
|
||||
C24.2,52.2,24.9,52.2,25.7,52.4z"/>
|
||||
<path fill="#FFFFFF" d="M21.1,50.5l-2.9,4.6l1.6,1L19,57.2l-4.4-2.8l0.7-1.1l1.6,1l2.9-4.6L21.1,50.5z"/>
|
||||
<path fill="#FFFFFF" d="M17.8,48.1L13.2,53l-1.1-1l4.6-4.9L17.8,48.1z"/>
|
||||
<path fill="#FFFFFF" d="M14.3,44c0.3,0.4,0.4,0.8,0.5,1.2c0.1,0.4,0.1,0.8,0,1.2c-0.1,0.4-0.3,0.8-0.6,1.1
|
||||
c-0.3,0.4-0.6,0.7-1.1,1c-0.5,0.3-0.9,0.5-1.3,0.6c-0.4,0.1-0.9,0.1-1.2,0.1c-0.4-0.1-0.8-0.2-1.1-0.4s-0.6-0.5-0.9-0.9
|
||||
s-0.4-0.8-0.5-1.2C8,46.3,8,46,8.1,45.6c0.1-0.4,0.3-0.8,0.6-1.1c0.3-0.4,0.6-0.7,1.1-1c0.5-0.3,0.9-0.5,1.3-0.6
|
||||
c0.4-0.1,0.9-0.2,1.3-0.1c0.4,0.1,0.8,0.2,1.1,0.4C13.8,43.3,14.1,43.6,14.3,44z M13.2,44.7c-0.3-0.4-0.6-0.6-1.1-0.6
|
||||
c-0.5,0-1,0.2-1.6,0.6c-0.6,0.4-0.9,0.8-1.1,1.2c-0.2,0.4-0.1,0.8,0.1,1.2c0.3,0.4,0.6,0.6,1.1,0.6c0.5,0,1-0.2,1.5-0.6
|
||||
c0.6-0.4,0.9-0.8,1.1-1.2C13.5,45.5,13.5,45.1,13.2,44.7z"/>
|
||||
<path fill="#FFFFFF" d="M12.2,40.8l-6.4,2l-0.5-1.5L8,38.6l1.2-1.1l0,0c-0.3,0.1-0.7,0.3-1.1,0.5c-0.4,0.2-0.8,0.3-1.2,0.4
|
||||
l-2.3,0.7l-0.4-1.4l6.4-2l0.5,1.5l-2.7,2.7L7.2,41l0,0c0.3-0.1,0.7-0.3,1.1-0.5s0.8-0.3,1.2-0.4l2.3-0.7L12.2,40.8z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FF8700" d="M38.4,36.4c-0.3,0.1-0.6,0.1-1,0.1c-3,0-7.3-10.3-7.3-13.8c0-1.3,0.3-1.7,0.7-2.1c-3.6,0.4-8,1.8-9.4,3.4
|
||||
c-0.3,0.4-0.5,1.1-0.5,1.9c0,5.4,5.7,17.6,9.8,17.6C32.7,43.6,35.8,40.6,38.4,36.4"/>
|
||||
<path fill="#FF8700" d="M36.5,20.4c3.7,0,7.5,0.6,7.5,2.7c0,4.3-2.7,9.5-4.1,9.5c-2.5,0-5.6-6.9-5.6-10.3
|
||||
C34.3,20.7,34.9,20.4,36.5,20.4"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,755 @@
|
||||
/*
|
||||
* This file is part of the TYPO3 CMS project.
|
||||
*
|
||||
* It is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License, either version 2
|
||||
* of the License, or any later version.
|
||||
*
|
||||
* For the full copyright and license information, please read the
|
||||
* LICENSE.txt file that was distributed with this source code.
|
||||
*
|
||||
* The TYPO3 project - inspiring people to share!
|
||||
*/
|
||||
/**
|
||||
* Module: TYPO3/CMS/Extensionmanager/Main
|
||||
* main logic holding everything together, consists of multiple parts
|
||||
* ExtensionManager => Various functions for displaying the extension list / sorting
|
||||
* Repository => Various AJAX functions for TER downloads
|
||||
* ExtensionManager.Update => Various AJAX functions to display updates
|
||||
* ExtensionManager.uploadForm => helper to show the upload form
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'nprogress',
|
||||
'TYPO3/CMS/Backend/Modal',
|
||||
'TYPO3/CMS/Backend/SplitButtons',
|
||||
'TYPO3/CMS/Backend/Tooltip',
|
||||
'TYPO3/CMS/Backend/Notification',
|
||||
'TYPO3/CMS/Backend/Severity',
|
||||
'TYPO3/CMS/Core/SecurityUtility',
|
||||
'datatables',
|
||||
'TYPO3/CMS/Backend/jquery.clearable'
|
||||
], function($, NProgress, Modal, SplitButtons, Tooltip, Notification, Severity, SecurityUtility) {
|
||||
|
||||
var securityUtility = new SecurityUtility();
|
||||
|
||||
/**
|
||||
*
|
||||
* @type {{identifier: {extensionlist: string, searchField: string, extensionManager: string}}}
|
||||
* @exports TYPO3/CMS/Extensionmanager/Main
|
||||
*/
|
||||
var ExtensionManager = {
|
||||
identifier: {
|
||||
extensionlist: '#typo3-extension-list',
|
||||
searchField: '#Tx_Extensionmanager_extensionkey'
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
ExtensionManager.manageExtensionListing = function() {
|
||||
var $searchField = $(this.identifier.searchField),
|
||||
dataTable = $(this.identifier.extensionlist).DataTable({
|
||||
paging: false,
|
||||
dom: 'lrtip',
|
||||
lengthChange: false,
|
||||
pageLength: 15,
|
||||
stateSave: true,
|
||||
drawCallback: this.bindExtensionListActions,
|
||||
columns: [
|
||||
null,
|
||||
null,
|
||||
{
|
||||
type: 'extension'
|
||||
},
|
||||
null,
|
||||
{
|
||||
type: 'version'
|
||||
}, {
|
||||
orderable: false
|
||||
},
|
||||
null,
|
||||
null
|
||||
]
|
||||
});
|
||||
|
||||
$searchField.parents('form').on('submit', function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
var getVars = ExtensionManager.getUrlVars();
|
||||
|
||||
// restore filter
|
||||
var currentSearch = (getVars['search'] ? getVars['search'] : dataTable.search());
|
||||
$searchField.val(currentSearch);
|
||||
|
||||
$searchField.on('input', function(e) {
|
||||
dataTable.search($(this).val()).draw();
|
||||
});
|
||||
|
||||
return dataTable;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ExtensionManager.bindExtensionListActions = function() {
|
||||
$('.removeExtension').not('.transformed').each(function() {
|
||||
var $me = $(this);
|
||||
$me.data('href', $me.attr('href'));
|
||||
$me.attr('href', '#');
|
||||
$me.addClass('transformed');
|
||||
$me.click(function() {
|
||||
Modal.confirm(
|
||||
TYPO3.lang['extensionList.removalConfirmation.title'],
|
||||
TYPO3.lang['extensionList.removalConfirmation.question'],
|
||||
Severity.error,
|
||||
[
|
||||
{
|
||||
text: TYPO3.lang['button.cancel'],
|
||||
active: true,
|
||||
btnClass: 'btn-default',
|
||||
trigger: function() {
|
||||
Modal.dismiss();
|
||||
}
|
||||
}, {
|
||||
text: TYPO3.lang['button.remove'],
|
||||
btnClass: 'btn-danger',
|
||||
trigger: function() {
|
||||
ExtensionManager.removeExtensionFromDisk($me);
|
||||
Modal.dismiss();
|
||||
}
|
||||
}
|
||||
]
|
||||
);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} $extension
|
||||
*/
|
||||
ExtensionManager.removeExtensionFromDisk = function($extension) {
|
||||
$.ajax({
|
||||
url: $extension.data('href'),
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
success: function() {
|
||||
location.reload();
|
||||
},
|
||||
complete: function() {
|
||||
NProgress.done();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {Array}
|
||||
*/
|
||||
ExtensionManager.getUrlVars = function() {
|
||||
var vars = [], hash;
|
||||
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
|
||||
for (var i = 0; i < hashes.length; i++) {
|
||||
hash = hashes[i].split('=');
|
||||
vars.push(hash[0]);
|
||||
vars[hash[0]] = hash[1];
|
||||
}
|
||||
return vars;
|
||||
};
|
||||
|
||||
$.fn.dataTableExt.oSort['extension-asc'] = function(a, b) {
|
||||
return ExtensionManager.extensionCompare(a, b);
|
||||
};
|
||||
|
||||
$.fn.dataTableExt.oSort['extension-desc'] = function(a, b) {
|
||||
var result = ExtensionManager.extensionCompare(a, b);
|
||||
return result * -1;
|
||||
};
|
||||
|
||||
$.fn.dataTableExt.oSort['version-asc'] = function(a, b) {
|
||||
var result = ExtensionManager.versionCompare(a, b);
|
||||
return result * -1;
|
||||
};
|
||||
|
||||
$.fn.dataTableExt.oSort['version-desc'] = function(a, b) {
|
||||
return ExtensionManager.versionCompare(a, b);
|
||||
};
|
||||
|
||||
/**
|
||||
* Special sorting for the extension version column
|
||||
*
|
||||
* @param {String} a
|
||||
* @param {String} b
|
||||
* @returns {Number}
|
||||
*/
|
||||
ExtensionManager.versionCompare = function(a, b) {
|
||||
if (a === b) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var a_components = a.split(".");
|
||||
var b_components = b.split(".");
|
||||
|
||||
var len = Math.min(a_components.length, b_components.length);
|
||||
|
||||
// loop while the components are equal
|
||||
for (var i = 0; i < len; i++) {
|
||||
// A bigger than B
|
||||
if (parseInt(a_components[i]) > parseInt(b_components[i])) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// B bigger than A
|
||||
if (parseInt(a_components[i]) < parseInt(b_components[i])) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// If one's a prefix of the other, the longer one is greaRepository.
|
||||
if (a_components.length > b_components.length) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (a_components.length < b_components.length) {
|
||||
return -1;
|
||||
}
|
||||
// Otherwise they are the same.
|
||||
return 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* The extension name column can contain various forms of HTML that
|
||||
* break a direct comparison of values
|
||||
*
|
||||
* @param {String} a
|
||||
* @param {String} b
|
||||
* @returns {Number}
|
||||
*/
|
||||
ExtensionManager.extensionCompare = function(a, b) {
|
||||
var div = document.createElement("div");
|
||||
div.innerHTML = a;
|
||||
var aStr = div.textContent || div.innerText || a;
|
||||
|
||||
div.innerHTML = b;
|
||||
var bStr = div.textContent || div.innerText || b;
|
||||
|
||||
return aStr.trim().localeCompare(bStr.trim());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} data
|
||||
*/
|
||||
ExtensionManager.updateExtension = function(data) {
|
||||
var i = 0;
|
||||
var $form = $('<form>');
|
||||
$.each(data.updateComments, function(version, comment) {
|
||||
var $input = $('<input>').attr({type: 'radio', name: 'version'}).val(version);
|
||||
if (i === 0) {
|
||||
$input.attr('checked', 'checked');
|
||||
}
|
||||
$form.append([
|
||||
$('<h3>').append([
|
||||
$input,
|
||||
' ' + securityUtility.encodeHtml(version)
|
||||
]),
|
||||
$('<div>')
|
||||
.append(
|
||||
comment
|
||||
.replace(/(\r\n|\n\r|\r|\n)/g, '\n')
|
||||
.split(/\n/).map(function(line) {
|
||||
return securityUtility.encodeHtml(line);
|
||||
})
|
||||
.join('<br>')
|
||||
)
|
||||
]);
|
||||
i++;
|
||||
});
|
||||
var $container = $('<div>').append([
|
||||
$('<h1>').text(TYPO3.lang['extensionList.updateConfirmation.title']),
|
||||
$('<h2>').text(TYPO3.lang['extensionList.updateConfirmation.message']),
|
||||
$form
|
||||
]);
|
||||
|
||||
NProgress.done();
|
||||
|
||||
Modal.confirm(
|
||||
TYPO3.lang['extensionList.updateConfirmation.questionVersionComments'],
|
||||
$container,
|
||||
Severity.warning,
|
||||
[
|
||||
{
|
||||
text: TYPO3.lang['button.cancel'],
|
||||
active: true,
|
||||
btnClass: 'btn-default',
|
||||
trigger: function() {
|
||||
Modal.dismiss();
|
||||
}
|
||||
}, {
|
||||
text: TYPO3.lang['button.updateExtension'],
|
||||
btnClass: 'btn-warning',
|
||||
trigger: function() {
|
||||
$.ajax({
|
||||
url: data.url,
|
||||
data: {
|
||||
tx_extensionmanager_tools_extensionmanagerextensionmanager: {
|
||||
version: $('input:radio[name=version]:checked', Modal.currentModal).val()
|
||||
}
|
||||
},
|
||||
dataType: 'json',
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
complete: function() {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
Modal.dismiss();
|
||||
}
|
||||
}
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @type {{downloadPath: string}}
|
||||
*/
|
||||
var Repository = {
|
||||
downloadPath: ''
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Repository.initDom = function() {
|
||||
NProgress.configure({parent: '.module-loading-indicator', showSpinner: false});
|
||||
|
||||
$('#terTable').DataTable({
|
||||
lengthChange: false,
|
||||
pageLength: 15,
|
||||
stateSave: false,
|
||||
info: false,
|
||||
paging: false,
|
||||
searching: false,
|
||||
ordering: false,
|
||||
drawCallback: Repository.bindDownload
|
||||
});
|
||||
|
||||
$('#terVersionTable').DataTable({
|
||||
lengthChange: false,
|
||||
pageLength: 15,
|
||||
stateSave: false,
|
||||
info: false,
|
||||
paging: false,
|
||||
searching: false,
|
||||
drawCallback: Repository.bindDownload,
|
||||
order: [
|
||||
[2, 'asc']
|
||||
],
|
||||
columns: [
|
||||
{orderable: false},
|
||||
null,
|
||||
{type: 'version'},
|
||||
null,
|
||||
null,
|
||||
null
|
||||
]
|
||||
});
|
||||
|
||||
$('#terSearchTable').DataTable({
|
||||
paging: false,
|
||||
lengthChange: false,
|
||||
stateSave: false,
|
||||
searching: false,
|
||||
language: {
|
||||
search: 'Filter results:'
|
||||
},
|
||||
ordering: false,
|
||||
drawCallback: Repository.bindDownload
|
||||
});
|
||||
|
||||
Repository.bindDownload();
|
||||
Repository.bindSearchFieldResetter();
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Repository.bindDownload = function() {
|
||||
var installButtons = $('.downloadFromTer form.download button[type=submit]');
|
||||
installButtons.off('click');
|
||||
installButtons.on('click', function(event) {
|
||||
event.preventDefault();
|
||||
var url = $(event.currentTarget.form).attr('data-href');
|
||||
Repository.downloadPath = $(event.currentTarget.form).find('input.downloadPath:checked').val();
|
||||
$.ajax({
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
success: Repository.getDependencies
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} data
|
||||
* @returns {Boolean}
|
||||
*/
|
||||
Repository.getDependencies = function(data) {
|
||||
NProgress.done();
|
||||
if (data.hasDependencies) {
|
||||
Modal.confirm(data.title, $(data.message), Severity.info, [
|
||||
{
|
||||
text: TYPO3.lang['button.cancel'],
|
||||
active: true,
|
||||
btnClass: 'btn-default',
|
||||
trigger: function() {
|
||||
Modal.dismiss();
|
||||
}
|
||||
}, {
|
||||
text: TYPO3.lang['button.resolveDependencies'],
|
||||
btnClass: 'btn-info',
|
||||
trigger: function() {
|
||||
Repository.getResolveDependenciesAndInstallResult(data.url + '&tx_extensionmanager_tools_extensionmanagerextensionmanager[downloadPath]=' + Repository.downloadPath);
|
||||
Modal.dismiss();
|
||||
}
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
if (data.hasErrors) {
|
||||
Notification.error(data.title, data.message, 15);
|
||||
} else {
|
||||
Repository.getResolveDependenciesAndInstallResult(data.url + '&tx_extensionmanager_tools_extensionmanagerextensionmanager[downloadPath]=' + Repository.downloadPath);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} url
|
||||
*/
|
||||
Repository.getResolveDependenciesAndInstallResult = function(url) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
success: function(data) {
|
||||
if (data.errorCount > 0) {
|
||||
Modal.confirm(data.errorTitle, $(data.errorMessage), Severity.error, [
|
||||
{
|
||||
text: TYPO3.lang['button.cancel'],
|
||||
active: true,
|
||||
btnClass: 'btn-default',
|
||||
trigger: function() {
|
||||
Modal.dismiss();
|
||||
}
|
||||
}, {
|
||||
text: TYPO3.lang['button.resolveDependenciesIgnore'],
|
||||
btnClass: 'btn-danger disabled t3js-dependencies',
|
||||
trigger: function() {
|
||||
if (!$(this).hasClass('disabled')) {
|
||||
Repository.getResolveDependenciesAndInstallResult(data.skipDependencyUri);
|
||||
Modal.dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
]);
|
||||
Modal.currentModal.on('shown.bs.modal', function() {
|
||||
var $actionButton = Modal.currentModal.find('.t3js-dependencies');
|
||||
$('input[name="unlockDependencyIgnoreButton"]', Modal.currentModal).on('change', function() {
|
||||
$actionButton.toggleClass('disabled', !$(this).prop('checked'));
|
||||
});
|
||||
});
|
||||
} else {
|
||||
var successMessage = TYPO3.lang['extensionList.dependenciesResolveDownloadSuccess.message' + data.installationTypeLanguageKey].replace(/\{0\}/g, data.extension);
|
||||
|
||||
successMessage += '\n' + TYPO3.lang['extensionList.dependenciesResolveDownloadSuccess.header'] + ': ';
|
||||
$.each(data.result, function(index, value) {
|
||||
successMessage += '\n\n' + TYPO3.lang['extensionList.dependenciesResolveDownloadSuccess.item'] + ' ' + index + ': ';
|
||||
$.each(value, function(extkey) {
|
||||
successMessage += '\n* ' + extkey
|
||||
});
|
||||
});
|
||||
Notification.info(TYPO3.lang['extensionList.dependenciesResolveFlashMessage.title' + data.installationTypeLanguageKey].replace(/\{0\}/g, data.extension), successMessage, 15);
|
||||
top.TYPO3.ModuleMenu.App.refreshMenu();
|
||||
}
|
||||
},
|
||||
complete: function() {
|
||||
NProgress.done();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
Repository.bindSearchFieldResetter = function() {
|
||||
var $searchFields = $('.typo3-extensionmanager-searchTerForm input[type="text"]');
|
||||
var searchResultShown = ('' !== $searchFields.first().val());
|
||||
|
||||
$searchFields.clearable(
|
||||
{
|
||||
onClear: function() {
|
||||
if (searchResultShown) {
|
||||
$(this).closest('form').submit();
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @type {{identifier: {extensionTable: string, terUpdateAction: string, pagination: string, splashscreen: string, terTableWrapper: string, terTableDataTableWrapper: string}}}
|
||||
*/
|
||||
ExtensionManager.Update = {
|
||||
identifier: {
|
||||
extensionTable: '#terTable',
|
||||
terUpdateAction: '.update-from-ter',
|
||||
pagination: '.pagination-wrap',
|
||||
splashscreen: '.splash-receivedata',
|
||||
terTableWrapper: '#terTableWrapper',
|
||||
terTableDataTableWrapper: '#terTableWrapper .dataTables_wrapper'
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Register "update from ter" action
|
||||
*/
|
||||
ExtensionManager.Update.initializeEvents = function() {
|
||||
$(ExtensionManager.Update.identifier.terUpdateAction).each(function() {
|
||||
|
||||
// "this" is the form which updates the extension list from
|
||||
// TER on submit
|
||||
var $me = $(this),
|
||||
updateURL = $(this).attr('action');
|
||||
|
||||
$me.attr('action', '#');
|
||||
$me.submit(function() {
|
||||
// Force update on click.
|
||||
ExtensionManager.Update.updateFromTer(updateURL, true);
|
||||
|
||||
// Prevent normal submit action.
|
||||
return false;
|
||||
});
|
||||
|
||||
// This might give problems when there are more "update"-buttons,
|
||||
// each one would trigger a TER-ExtensionManager.Update.
|
||||
ExtensionManager.Update.updateFromTer(updateURL, false);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} url
|
||||
* @param {Boolean} forceUpdate
|
||||
*/
|
||||
ExtensionManager.Update.updateFromTer = function(url, forceUpdate) {
|
||||
if (forceUpdate) {
|
||||
url = url + '&tx_extensionmanager_tools_extensionmanagerextensionmanager%5BforceUpdateCheck%5D=1';
|
||||
}
|
||||
|
||||
// Hide triggers for TER update
|
||||
$(ExtensionManager.Update.identifier.terUpdateAction).addClass('is-hidden');
|
||||
|
||||
// Hide extension table
|
||||
$(ExtensionManager.Update.identifier.extensionTable).hide();
|
||||
|
||||
// Show loaders
|
||||
$(ExtensionManager.Update.identifier.splashscreen).addClass('is-shown');
|
||||
$(ExtensionManager.Update.identifier.terTableDataTableWrapper).addClass('is-loading');
|
||||
$(ExtensionManager.Update.identifier.pagination).addClass('is-loading');
|
||||
|
||||
var reload = false;
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
success: function(data) {
|
||||
// Something went wrong, show message
|
||||
if (data.errorMessage.length) {
|
||||
Notification.error(TYPO3.lang['extensionList.updateFromTerFlashMessage.title'], data.errorMessage, 10);
|
||||
}
|
||||
|
||||
// Message with latest updates
|
||||
var $lastUpdate = $(ExtensionManager.Update.identifier.terUpdateAction + ' .time-since-last-update');
|
||||
$lastUpdate.text(data.timeSinceLastUpdate);
|
||||
$lastUpdate.attr(
|
||||
'title',
|
||||
TYPO3.lang['extensionList.updateFromTer.lastUpdate.timeOfLastUpdate'] + data.lastUpdateTime
|
||||
);
|
||||
|
||||
if (data.updated) {
|
||||
// Reload page
|
||||
reload = true;
|
||||
window.location.replace(window.location.href);
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
// Create an error message with diagnosis info.
|
||||
var errorMessage = textStatus + '(' + errorThrown + '): ' + jqXHR.responseText;
|
||||
|
||||
Notification.warning(
|
||||
TYPO3.lang['extensionList.updateFromTerFlashMessage.title'],
|
||||
errorMessage,
|
||||
10
|
||||
);
|
||||
},
|
||||
complete: function() {
|
||||
NProgress.done();
|
||||
|
||||
if (!reload) {
|
||||
// Hide loaders
|
||||
$(ExtensionManager.Update.identifier.splashscreen).removeClass('is-shown');
|
||||
$(ExtensionManager.Update.identifier.terTableDataTableWrapper).removeClass('is-loading');
|
||||
$(ExtensionManager.Update.identifier.pagination).removeClass('is-loading');
|
||||
|
||||
// Show triggers for TER-update
|
||||
$(ExtensionManager.Update.identifier.terUpdateAction).removeClass('is-hidden');
|
||||
|
||||
// Show extension table
|
||||
$(ExtensionManager.Update.identifier.extensionTable).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ExtensionManager.Update.transformPaginatorToAjax = function() {
|
||||
$(ExtensionManager.Update.identifier.pagination + ' a').each(function() {
|
||||
var $me = $(this);
|
||||
$me.data('href', $(this).attr('href'));
|
||||
$me.attr('href', '#');
|
||||
$me.click(function() {
|
||||
var $terTableWrapper = $(ExtensionManager.Update.identifier.terTableWrapper);
|
||||
NProgress.start();
|
||||
$.ajax({
|
||||
url: $(this).data('href'),
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
$terTableWrapper.html(data);
|
||||
ExtensionManager.Update.transformPaginatorToAjax();
|
||||
},
|
||||
complete: function() {
|
||||
NProgress.done();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* show the uploading form
|
||||
*/
|
||||
ExtensionManager.UploadForm = {
|
||||
expandedUploadFormClass: 'transformed'
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
ExtensionManager.UploadForm.initializeEvents = function() {
|
||||
// Show upload form
|
||||
$(document).on('click', '.t3js-upload', function(event) {
|
||||
var $me = $(this),
|
||||
$uploadForm = $('.uploadForm');
|
||||
|
||||
event.preventDefault();
|
||||
if ($me.hasClass(ExtensionManager.UploadForm.expandedUploadFormClass)) {
|
||||
$uploadForm.stop().slideUp();
|
||||
$me.removeClass(ExtensionManager.UploadForm.expandedUploadFormClass);
|
||||
} else {
|
||||
$me.addClass(ExtensionManager.UploadForm.expandedUploadFormClass);
|
||||
$uploadForm.stop().slideDown();
|
||||
|
||||
$.ajax({
|
||||
url: $me.attr('href'),
|
||||
dataType: 'html',
|
||||
success: function(data) {
|
||||
$uploadForm.html(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(function() {
|
||||
var dataTable = ExtensionManager.manageExtensionListing();
|
||||
|
||||
$(document).on('click', '.onClickMaskExtensionManager', function() {
|
||||
NProgress.start();
|
||||
}).on('click', 'a[data-action=update-extension]', function(e) {
|
||||
e.preventDefault();
|
||||
$.ajax({
|
||||
url: $(this).attr('href'),
|
||||
dataType: 'json',
|
||||
beforeSend: function() {
|
||||
NProgress.start();
|
||||
},
|
||||
success: ExtensionManager.updateExtension
|
||||
});
|
||||
}).on('change', 'input[name=unlockDependencyIgnoreButton]', function() {
|
||||
var $actionButton = $('.t3js-dependencies');
|
||||
$actionButton.toggleClass('disabled', !$(this).prop('checked'));
|
||||
});
|
||||
|
||||
$(ExtensionManager.identifier.searchField).clearable({
|
||||
onClear: function() {
|
||||
dataTable.search('').draw();
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '.t3-button-action-installdistribution', function() {
|
||||
NProgress.start();
|
||||
});
|
||||
|
||||
SplitButtons.addPreSubmitCallback(function(e) {
|
||||
if ($(e.target).hasClass('t3js-save-close')) {
|
||||
$('#configurationform').append($('<input />', {
|
||||
type: 'hidden',
|
||||
name: 'tx_extensionmanager_tools_extensionmanagerextensionmanager[action]',
|
||||
value: 'saveAndClose'
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
// initialize the repository
|
||||
Repository.initDom();
|
||||
|
||||
ExtensionManager.Update.initializeEvents();
|
||||
ExtensionManager.UploadForm.initializeEvents();
|
||||
|
||||
Tooltip.initialize('#typo3-extension-list [title]', {
|
||||
delay: {
|
||||
show: 500,
|
||||
hide: 100
|
||||
},
|
||||
trigger: 'hover',
|
||||
container: 'body'
|
||||
});
|
||||
});
|
||||
|
||||
if (typeof TYPO3.ExtensionManager === 'undefined') {
|
||||
TYPO3.ExtensionManager = ExtensionManager;
|
||||
}
|
||||
|
||||
return ExtensionManager;
|
||||
});
|
||||
Reference in new issue
Block a user