diff --git a/lib/browse/BrowseColumns.inc.php b/lib/browse/BrowseColumns.inc.php index 3d7ee98..a7021a0 100644 --- a/lib/browse/BrowseColumns.inc.php +++ b/lib/browse/BrowseColumns.inc.php @@ -319,6 +319,44 @@ class SelectionColumn extends BrowseColumn { } +class SingleSelectionColumn extends SelectionColumn { + var $show_documents; + var $show_folders; + + function SelectionColumn ($sLabel, $sName, $bShowFolders = true, $bShowDocs = true) { + $this->show_documents = $bShowDocs; + $this->show_folders = $bShowFolders; + parent::BrowseColumn($sLabel, $sName); + } + + function renderHeader($sReturnURL) { + global $main; + } + + // only include the _f or _d IF WE HAVE THE OTHER TYPE. + function renderData($aDataRow) { + $localname = $this->name; + + if (($aDataRow["type"] === "folder") && ($this->show_folders)) { + if ($this->show_documents) { + $localname .= "_f"; + } + $v = $aDataRow["folderid"]; + } else if (($aDataRow["type"] === "document") && $this->show_documents) { + if ($this->show_folders) { + $localname .= "_d"; + } + $v = $aDataRow["docid"]; + } else { + return ' '; + } + + return ''; + } + +} + + class WorkflowColumn extends BrowseColumn { function renderHeader($sReturnURL) { diff --git a/lib/widgets/reorderdisplay.inc.php b/lib/widgets/reorderdisplay.inc.php new file mode 100644 index 0000000..e986063 --- /dev/null +++ b/lib/widgets/reorderdisplay.inc.php @@ -0,0 +1,55 @@ +aItems = $aItems; + } + + function render() { + global $main; + $main->requireJSResource("resources/js/reorder.js"); + + $oTemplating =& KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate("kt3/reorderdisplay"); + $aTemplateData = array( + "context" => $this, + "items" => $this->aItems, + ); + + return $oTemplate->render($aTemplateData); + } +} + +?> diff --git a/resources/css/kt-framing.css b/resources/css/kt-framing.css index de8a88a..8cf30b5 100644 --- a/resources/css/kt-framing.css +++ b/resources/css/kt-framing.css @@ -762,6 +762,8 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes .ktActionLink.ktBack, .ktAction.ktBack { background-image: url(../../thirdparty/icon-theme/16x16/actions/back.png); } .ktActionLink.ktAllowed, .ktAction.ktAllowed { background-image: url(../../resources/graphics/allowed.png); } .ktActionLink.ktDenied, .ktAction.ktDenied { background-image: url(../../resources/graphics/denied.png); } +.ktActionLink.ktMoveUp, .ktAction.ktMoveUp { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-up.png); } +.ktActionLink.ktMoveDown, .ktAction.ktMoveDown { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-down.png); } /* this is sometimes used separately to get the auto-delete help. */ .ktDelete { } diff --git a/resources/css/kt-ie-icons.css b/resources/css/kt-ie-icons.css index e91384b..6a3adc9 100644 --- a/resources/css/kt-ie-icons.css +++ b/resources/css/kt-ie-icons.css @@ -11,6 +11,8 @@ .ktActionLink.ktBack, .ktAction.ktBack { background-image: url(../../thirdparty/icon-theme/16x16/actions/back.gif); } .ktActionLink.ktAllowed, .ktAction.ktAllowed { background-image: url(../../resources/graphics/allowed.gif); } .ktActionLink.ktDenied, .ktAction.ktDenied { background-image: url(../../resources/graphics/denied.gif); } +.ktActionLink.ktMoveUp, .ktAction.ktMoveUp { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-up.gif); } +.ktActionLink.ktMoveDown, .ktAction.ktMoveDown { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-down.gif); } .contenttype.office { background-image: url(../../resources/mimetypes/office.gif); } .contenttype.word { background-image: url(../../resources/mimetypes/word.gif); } diff --git a/resources/js/reorder.js b/resources/js/reorder.js new file mode 100644 index 0000000..90c6a06 --- /dev/null +++ b/resources/js/reorder.js @@ -0,0 +1,53 @@ +function getSibling(elm, which) { + var ret = elm[which + 'Sibling']; + + while(!isUndefinedOrNull(ret) && ret.nodeName == '#text') ret = ret[which + 'Sibling']; + if(isUndefinedOrNull(ret)) return false; + return ret; +} + +function swapItems(first, second) { + // ALWAYS in order + toggleElementClass('odd', first, second); + toggleElementClass('even', first, second); + first.parentNode.insertBefore(first, second); + var pos = first.reorderField.value; + first.reorderField.value = second.reorderField.value; + second.reorderField.value = pos; + +} + +function moveUp() { + var otherItem = getSibling(this, 'previous'); + if(otherItem) { + swapItems(this, otherItem); + } + return false; +} + + +function moveDown() { + var otherItem = getSibling(this, 'next'); + if(otherItem) { + swapItems(otherItem, this); + } + return false; +} + + +function hookReorderDisplay() { + var container = $('reorder-container'); + if(isUndefinedOrNull(container)) return; + forEach(getElementsByTagAndClassName('*', 'reorder-item', container), function(item) { + var up = getElementsByTagAndClassName('*', 'reorder-up', item)[0], + down = getElementsByTagAndClassName('*', 'reorder-down', item)[0]; + + up.onclick = bind(moveUp, item); + down.onclick = bind(moveDown, item); + item.reorderField = getElementsByTagAndClassName('input', 'reorder-field', item)[0]; + }); +} + + + +addLoadEvent(hookReorderDisplay); \ No newline at end of file diff --git a/templates/kt3/reorderdisplay.smarty b/templates/kt3/reorderdisplay.smarty new file mode 100644 index 0000000..7ad79c5 --- /dev/null +++ b/templates/kt3/reorderdisplay.smarty @@ -0,0 +1,26 @@ + + + + + + + + + + + + + +{foreach from=$items key=iPosition item=aItem} + + + + + +{/foreach} + +
ItemUpDown
+ + + {$aItem.title} +   
diff --git a/thirdparty/icon-theme/16x16/actions/move-down.gif b/thirdparty/icon-theme/16x16/actions/move-down.gif new file mode 100644 index 0000000..7900320 --- /dev/null +++ b/thirdparty/icon-theme/16x16/actions/move-down.gif diff --git a/thirdparty/icon-theme/16x16/actions/move-down.png b/thirdparty/icon-theme/16x16/actions/move-down.png new file mode 100644 index 0000000..314f4ce --- /dev/null +++ b/thirdparty/icon-theme/16x16/actions/move-down.png diff --git a/thirdparty/icon-theme/16x16/actions/move-up.gif b/thirdparty/icon-theme/16x16/actions/move-up.gif new file mode 100644 index 0000000..1d6048d --- /dev/null +++ b/thirdparty/icon-theme/16x16/actions/move-up.gif diff --git a/thirdparty/icon-theme/16x16/actions/move-up.png b/thirdparty/icon-theme/16x16/actions/move-up.png new file mode 100644 index 0000000..27ba0aa --- /dev/null +++ b/thirdparty/icon-theme/16x16/actions/move-up.png