Documents at 65%. Display folders and documents, no pagination yet.. Posible to create Folders and upload external files. Working on Download, search
438
gulliver/js/ext/ux.locationbar/Ext.ux.LocationBar.js
Executable file
@@ -0,0 +1,438 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008, brainbits GmbH All rights reserved.
|
||||||
|
* Author: Stephan Wentz. swentz[at]brainbits.net
|
||||||
|
*
|
||||||
|
* http://www.brainbits.net/
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LocationBar class
|
||||||
|
* Version: 0.1
|
||||||
|
* @class Ext.ux.Locationbar
|
||||||
|
* @extends Ext.Toolbar
|
||||||
|
* Locationbar class.
|
||||||
|
* @constructor
|
||||||
|
* Creates a new LocationBar
|
||||||
|
* @param {Object/Array} config A config object or an array of buttons to add
|
||||||
|
*/
|
||||||
|
Ext.ux.LocationBar = Ext.extend(Ext.Toolbar, {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {Number} maxItem Maximum number of items the Locationbar takes before the first items are removed (defaults to 15).
|
||||||
|
* Set to 0 for unlimited items.
|
||||||
|
*/
|
||||||
|
maxItems: 15,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} emptyText The that is shown if no history is available (defaults to 'No node selected.').
|
||||||
|
*/
|
||||||
|
emptyText: 'No node selected.',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {Boolean} noReload If set to true the reload button will not be visible (defaults to false).
|
||||||
|
*/
|
||||||
|
noReload: false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {Function} selectHandler The function to
|
||||||
|
* call when clicked. Arguments passed are:<ul>
|
||||||
|
* <li><b>node</b> : Object<p style="margin-left:1em">The node associated with the clicked item.</p></li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
selectHandler: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {Function} reloadHandler The function to
|
||||||
|
* call when clicked. Arguments passed are:<ul>
|
||||||
|
* <li><b>node</b> : Object<p style="margin-left:1em">The node associated with the current item.</p></li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
reloadHandler: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} locationItems Initial items (defaults to []).
|
||||||
|
*/
|
||||||
|
locationItems: [],
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} folderIconCls Iconclass for folder icons.
|
||||||
|
*/
|
||||||
|
folderIconCls: 'x-locationbar-folder-icon',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} folderIconCls Iconclass for the backward icon.
|
||||||
|
*/
|
||||||
|
backwardIconCls: 'x-locationbar-back-icon',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} folderIconCls Iconclass for the forward icon.
|
||||||
|
*/
|
||||||
|
forwardIconCls: 'x-locationbar-forward-icon',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {String} folderIconCls Iconclass for the reload icon.
|
||||||
|
*/
|
||||||
|
reloadIconCls: 'x-locationbar-reload-icon',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @cfg {Ext.tree.TreePanel} tree The treePanel this Locationbar is associated with.
|
||||||
|
*/
|
||||||
|
tree: null,
|
||||||
|
|
||||||
|
// private
|
||||||
|
historyItemNodes: {},
|
||||||
|
|
||||||
|
// private
|
||||||
|
historyItems: [],
|
||||||
|
|
||||||
|
// private
|
||||||
|
currentItem: false,
|
||||||
|
|
||||||
|
// private
|
||||||
|
historyNext: true,
|
||||||
|
|
||||||
|
// private
|
||||||
|
initComponent: function() {
|
||||||
|
//console.log("initComponent location bar");
|
||||||
|
if(this.tree) {
|
||||||
|
//console.log("tree exists");
|
||||||
|
//console.debug(this.tree);
|
||||||
|
//console.log("adding listener LOAD");
|
||||||
|
this.tree.getLoader().addListener('load',function(tl,node,resp){
|
||||||
|
//console.log("tree get loader LOAD -> "+node);
|
||||||
|
if(node){
|
||||||
|
node.loaded=true;
|
||||||
|
this.setNode(node);
|
||||||
|
}
|
||||||
|
},this);
|
||||||
|
//console.log("complete listener LOAD");
|
||||||
|
//console.log("adding listenr SELECTIONCHANGE");
|
||||||
|
this.tree.getSelectionModel().addListener('selectionchange', function(sm, node) {
|
||||||
|
//console.log("tree get loader SELECTION CHANGE");
|
||||||
|
if( node && node.id ) {
|
||||||
|
//console.log("changing to dir (form location bar) "+node.id);
|
||||||
|
chDir( node.id, true );
|
||||||
|
}
|
||||||
|
if (node.isLeaf()==false && node.childNodes.length==0){
|
||||||
|
//console.log(node.isLeaf(),node.childNodes.length)
|
||||||
|
this.nodeJustLoaded=node;
|
||||||
|
//this.tree.getLoader().load(node);
|
||||||
|
//this.loadNode(node);
|
||||||
|
}else{
|
||||||
|
this.setNode(node);
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
//console.log("complete add listener SELECTIONCHANGE");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//this.addListener('render', this.repaint, this);
|
||||||
|
|
||||||
|
// Ext.ux.LocationBar.superclass.initComponent.call(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
autoCreate: {
|
||||||
|
cls:'x-toolbar x-small-editor x-locationbar',
|
||||||
|
html:'<table cellspacing="0"><tr></tr></table>'
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
onRender: function(ct, position) {
|
||||||
|
Ext.ux.LocationBar.superclass.onRender.call(this, ct, position);
|
||||||
|
|
||||||
|
this.repaint();
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
onClick: function(node) {
|
||||||
|
if (this.selectHandler) {
|
||||||
|
this.selectHandler(node);
|
||||||
|
} else {
|
||||||
|
if(node.parentNode) {
|
||||||
|
node.parentNode.expand(false,true);
|
||||||
|
node.ensureVisible();
|
||||||
|
}
|
||||||
|
node.select();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
onReload: function(node) {
|
||||||
|
if (this.reloadHandler) {
|
||||||
|
this.reloadHandler(node);
|
||||||
|
} else if(node.reload) {
|
||||||
|
node.reload();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears all items from the LocationBar.
|
||||||
|
*/
|
||||||
|
clear: function() {
|
||||||
|
this.locationItems = [];
|
||||||
|
|
||||||
|
this.repaint;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the current Treenode
|
||||||
|
* If a tree was provided as a config to this LocationBar, this should
|
||||||
|
* be called automatically.
|
||||||
|
* @param {Ext.ux.TreeNode} node The currently selected TreeNode
|
||||||
|
*/
|
||||||
|
setNode: function(node) {
|
||||||
|
var path = [];
|
||||||
|
var pNode = node;
|
||||||
|
var i;
|
||||||
|
do {
|
||||||
|
var conf = {
|
||||||
|
text: pNode.attributes.text,
|
||||||
|
node: pNode,
|
||||||
|
handler: this.onClick.createDelegate(this, [pNode], false)
|
||||||
|
};
|
||||||
|
if (pNode.childNodes.length) {
|
||||||
|
var childs = [];
|
||||||
|
|
||||||
|
for (i = 0; i < pNode.childNodes.length; i++) {
|
||||||
|
|
||||||
|
childs[i] = {
|
||||||
|
text: pNode.childNodes[i].attributes.text,
|
||||||
|
node: pNode.childNodes[i],
|
||||||
|
iconCls: this.folderIconCls,
|
||||||
|
handler: this.onClick.createDelegate(this, [pNode.childNodes[i]], false)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
conf.xtype = 'tbsplit';
|
||||||
|
conf.menu = childs;
|
||||||
|
}
|
||||||
|
conf.fullPath = pNode.getPath('text').substr(1);
|
||||||
|
path.unshift(conf);
|
||||||
|
} while (pNode.parentNode && (pNode = pNode.parentNode) && pNode.id != 'root');
|
||||||
|
|
||||||
|
this.locationItems = [];
|
||||||
|
|
||||||
|
for(i=0; i<path.length; i++) {
|
||||||
|
this.addPathItemRaw(path[i]);
|
||||||
|
}
|
||||||
|
this.currentItem = path[path.length - 1];
|
||||||
|
|
||||||
|
this.addHistoryItemRaw(this.currentItem);
|
||||||
|
|
||||||
|
this.repaint();
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
addHistoryItemRaw: function(item){
|
||||||
|
if(this.historyItems.indexOf(item.text) != -1) {
|
||||||
|
this.historyItems.remove(item.text);
|
||||||
|
delete this.historyItemNodes[item.text];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.historyItems.push(item.text);
|
||||||
|
this.historyItemNodes[item.text] = item;
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
addPathItemRaw: function(item){
|
||||||
|
// if number of items > maxItems, remove last
|
||||||
|
if(this.maxItems && this.locationItems.length > this.maxItems) {
|
||||||
|
this.locationItems.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// put new item at the end
|
||||||
|
this.locationItems.push(item);
|
||||||
|
},
|
||||||
|
|
||||||
|
// private
|
||||||
|
repaint: function() {
|
||||||
|
if (this.items && this.items.length) {
|
||||||
|
var _doLayout = true;
|
||||||
|
this.items.each(function(item){
|
||||||
|
this.items.remove(item);
|
||||||
|
item.destroy();
|
||||||
|
}, this.items);
|
||||||
|
} else {
|
||||||
|
var _doLayout = false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
this.items.each(function(item){
|
||||||
|
this.items.remove(item);
|
||||||
|
item.destroy();
|
||||||
|
}, this.items);
|
||||||
|
} catch(e) {}
|
||||||
|
// back button
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.backwardIconCls,
|
||||||
|
handler: function() {
|
||||||
|
this.historyNext = this.historyItems.pop();
|
||||||
|
var itemKey = this.historyItems.pop();
|
||||||
|
var item = this.historyItemNodes[itemKey];
|
||||||
|
this.onClick(item.node);
|
||||||
|
},
|
||||||
|
scope: this,
|
||||||
|
disabled: this.historyItems.length > 1 ? false : true
|
||||||
|
});
|
||||||
|
|
||||||
|
// forward button
|
||||||
|
// TODO: disabled, FUBAR
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.forwardIconCls,
|
||||||
|
handler: function() {
|
||||||
|
var node = this.historyNext.node;
|
||||||
|
this.historyNext = false;
|
||||||
|
this.onClick(node);
|
||||||
|
},
|
||||||
|
scope: this,
|
||||||
|
disabled: true //this.historyNext ? false : true
|
||||||
|
});
|
||||||
|
|
||||||
|
this.add(' ','-',' ');
|
||||||
|
|
||||||
|
if (this.locationItems.length) {
|
||||||
|
// folder icon
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.folderIconCls,
|
||||||
|
ctCls: 'x-locationbar-location x-locationbar-location-first',
|
||||||
|
disabled: true
|
||||||
|
});
|
||||||
|
|
||||||
|
var text;
|
||||||
|
for (var i = 0; i < this.locationItems.length; i++) {
|
||||||
|
var locationItem = this.locationItems[i];
|
||||||
|
|
||||||
|
var item = {};
|
||||||
|
|
||||||
|
if (typeof locationItem == 'object') {
|
||||||
|
item = locationItem;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
item.text = locationItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!item.text) {
|
||||||
|
item.text = 'n/a';
|
||||||
|
}
|
||||||
|
|
||||||
|
item.handler = this.onClick.createDelegate(this, [locationItem.node], false);
|
||||||
|
|
||||||
|
item.ctCls = 'x-locationbar-location';
|
||||||
|
|
||||||
|
this.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// spacer
|
||||||
|
this.addItem(
|
||||||
|
{
|
||||||
|
cls: 'x-locationbar-location x-locationbar-location-last',
|
||||||
|
xtype: 'tbfill'
|
||||||
|
});
|
||||||
|
|
||||||
|
menu = [];
|
||||||
|
for(var i=this.historyItems.length-2; i>=0; i--) {
|
||||||
|
menu.push({
|
||||||
|
text: this.historyItemNodes[this.historyItems[i]].fullPath,
|
||||||
|
iconCls: this.folderIconCls,
|
||||||
|
node: this.historyItemNodes[this.historyItems[i]].node,
|
||||||
|
handler: function(item) {
|
||||||
|
this.onClick(item.node);
|
||||||
|
},
|
||||||
|
scope: this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
ctCls: 'x-locationbar-location x-locationbar-location-last',
|
||||||
|
menuAlign: 'tr-br?',
|
||||||
|
menu: menu
|
||||||
|
});
|
||||||
|
if(!this.noReload) {
|
||||||
|
this.add(' ');
|
||||||
|
// reload button
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.reloadIconCls,
|
||||||
|
handler: function() {
|
||||||
|
this.onReload(this.currentItem.node);
|
||||||
|
},
|
||||||
|
scope: this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.add(' ');
|
||||||
|
} else {
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.folderIconCls,
|
||||||
|
ctCls: 'x-locationbar-location x-locationbar-location-first',
|
||||||
|
disabled: true
|
||||||
|
});
|
||||||
|
|
||||||
|
if(this.emptyText) {
|
||||||
|
this.add({
|
||||||
|
xtype: 'lbtext',
|
||||||
|
text: this.emptyText
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addItem(new Ext.ux.LocationBar.Fill());
|
||||||
|
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
ctCls: 'x-locationbar-location x-locationbar-location-last',
|
||||||
|
menuAlign: 'tr-br?',
|
||||||
|
disabled: true
|
||||||
|
});
|
||||||
|
this.add(' ');
|
||||||
|
this.add({
|
||||||
|
cls: 'x-btn-icon',
|
||||||
|
iconCls: this.reloadIconCls,
|
||||||
|
disabled: true
|
||||||
|
});
|
||||||
|
this.add(' ');
|
||||||
|
}
|
||||||
|
if (_doLayout === true) {
|
||||||
|
this.doLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.reg('locationbar', Ext.ux.LocationBar);
|
||||||
|
|
||||||
|
Ext.ux.Fill = Ext.extend(Ext.Toolbar.Spacer, {
|
||||||
|
// private
|
||||||
|
render : function(td){
|
||||||
|
|
||||||
|
td.style.width = '100%';
|
||||||
|
Ext.fly(td).addClass('x-locationbar-location');
|
||||||
|
Ext.ux.Fill.superclass.render.call(this, td);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ext.reg('tbfill', Ext.ux.Fill);
|
||||||
|
|
||||||
|
Ext.ux.LocationBar.Fill = Ext.extend(Ext.Toolbar.Fill, {
|
||||||
|
// private
|
||||||
|
render : function(td){
|
||||||
|
td.className = 'x-locationbar-location';
|
||||||
|
|
||||||
|
// insert a
|
||||||
|
var data = document.createTextNode('\u00a0');
|
||||||
|
this.el.appendChild(data);
|
||||||
|
|
||||||
|
Ext.ux.LocationBar.Fill.superclass.render.call(this, td);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ext.reg('lbfill', Ext.ux.LocationBar.Fill);
|
||||||
|
|
||||||
|
Ext.ux.LocationBar.TextItem = Ext.extend(Ext.Toolbar.TextItem, {
|
||||||
|
// private
|
||||||
|
render : function(td){
|
||||||
|
td.className = 'x-locationbar-location';
|
||||||
|
|
||||||
|
Ext.ux.LocationBar.Fill.superclass.render.call(this, td);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ext.reg('lbtext', Ext.ux.LocationBar.TextItem);
|
||||||
80
gulliver/js/ext/ux.statusbar/ext-statusbar.js
Executable file
@@ -0,0 +1,80 @@
|
|||||||
|
Ext.namespace('Ext.ux');
|
||||||
|
|
||||||
|
Ext.ux.StatusBar = Ext.extend(Ext.Toolbar, {
|
||||||
|
textId: '',
|
||||||
|
defaultText: '',
|
||||||
|
autoClear: 5000,
|
||||||
|
task: null,
|
||||||
|
initComponent: function() {
|
||||||
|
this.textId = Ext.id();
|
||||||
|
this.defaultText = this.initialConfig.defaultText || '';
|
||||||
|
var text = this.initialConfig.text || this.defaultText;
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
items: [
|
||||||
|
'<span id="'+this.textId+'">'+text+'</span>', // status text
|
||||||
|
'->' // make it greedy
|
||||||
|
]
|
||||||
|
};
|
||||||
|
if (this.initialConfig.items) {
|
||||||
|
config.items = config.items.concat(this.initialConfig.items);
|
||||||
|
delete this.initialConfig.items;
|
||||||
|
}
|
||||||
|
Ext.apply(this, Ext.apply(this.initialConfig, config));
|
||||||
|
Ext.ux.StatusBar.superclass.initComponent.apply(this, arguments);
|
||||||
|
this.task = new Ext.util.DelayedTask(function() {
|
||||||
|
var el = Ext.get(this.textId);
|
||||||
|
var defaultText = this.defaultText;
|
||||||
|
el.fadeOut({
|
||||||
|
callback: function() {
|
||||||
|
el.update(defaultText);
|
||||||
|
el.show();
|
||||||
|
},
|
||||||
|
duration: 1
|
||||||
|
});
|
||||||
|
}, this);
|
||||||
|
},
|
||||||
|
onRender: function() {
|
||||||
|
Ext.ux.StatusBar.superclass.onRender.apply(this, arguments);
|
||||||
|
},
|
||||||
|
setText: function(text) {
|
||||||
|
var el = Ext.get(this.textId);
|
||||||
|
el.update(text);
|
||||||
|
},
|
||||||
|
setStatus: function(config) {
|
||||||
|
var defaults = {
|
||||||
|
clear: {
|
||||||
|
wait: this.autoClear,
|
||||||
|
anim: true,
|
||||||
|
useDefaults: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (config.clear === true) {
|
||||||
|
delete config.clear;
|
||||||
|
}
|
||||||
|
if (!Ext.isArray(config)) {
|
||||||
|
config = {
|
||||||
|
text: config.text || ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ext.apply(config, defaults);
|
||||||
|
var el = Ext.get(this.textId);
|
||||||
|
el.update(config.text);
|
||||||
|
var clear = config.clear;
|
||||||
|
var defaultText = this.defaultText;
|
||||||
|
if (clear.wait) {
|
||||||
|
this.task.delay(clear.wait);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.task.cancel();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clearStatus: function() {
|
||||||
|
this.setText(this.defaultText);
|
||||||
|
this.task.cancel();
|
||||||
|
},
|
||||||
|
showBusy: function(msg) {
|
||||||
|
// stub for now
|
||||||
|
}
|
||||||
|
});
|
||||||
159
gulliver/js/ext/ux.treefilterx/Ext.ux.tree.TreeFilterX.js
Executable file
@@ -0,0 +1,159 @@
|
|||||||
|
// vim: ts=4:sw=4:nu:fdc=4:nospell
|
||||||
|
/* global Ext */
|
||||||
|
/**
|
||||||
|
* @class Ext.ux.tree.TreeFilterX
|
||||||
|
* @extends Ext.tree.TreeFilter
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Shows also parents of matching nodes as opposed to default TreeFilter. In
|
||||||
|
* other words this filter works "deep way".
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Ing. Jozef Sakáloš
|
||||||
|
* @version 1.0
|
||||||
|
* @date 17. December 2008
|
||||||
|
* @revision $Id: Ext.ux.tree.TreeFilterX.js 589 2009-02-21 23:30:18Z jozo $
|
||||||
|
* @see <a
|
||||||
|
* href="http://extjs.com/forum/showthread.php?p=252709">http://extjs.com/forum/showthread.php?p=252709</a>
|
||||||
|
*
|
||||||
|
* @license Ext.ux.tree.CheckTreePanel is licensed under the terms of the Open
|
||||||
|
* Source LGPL 3.0 license. Commercial use is permitted to the extent
|
||||||
|
* that the code/component(s) do NOT become part of another Open Source
|
||||||
|
* or Commercially licensed development library or toolkit without
|
||||||
|
* explicit permission.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* License details: <a href="http://www.gnu.org/licenses/lgpl.html"
|
||||||
|
* target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @forum 55489
|
||||||
|
* @demo http://remotetree.extjs.eu
|
||||||
|
*
|
||||||
|
* @donate <form action="https://www.paypal.com/cgi-bin/webscr" method="post"
|
||||||
|
* target="_blank"> <input type="hidden" name="cmd" value="_s-xclick">
|
||||||
|
* <input type="hidden" name="hosted_button_id" value="3430419"> <input
|
||||||
|
* type="image"
|
||||||
|
* src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif"
|
||||||
|
* border="0" name="submit" alt="PayPal - The safer, easier way to pay
|
||||||
|
* online."> <img alt="" border="0"
|
||||||
|
* src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1"
|
||||||
|
* height="1"> </form>
|
||||||
|
*/
|
||||||
|
|
||||||
|
Ext.ns('Ext.ux.tree');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new TreeFilterX
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
* @param {Ext.tree.TreePanel}
|
||||||
|
* tree The tree panel to attach this filter to
|
||||||
|
* @param {Object}
|
||||||
|
* config A config object of this filter
|
||||||
|
*/
|
||||||
|
Ext.ux.tree.TreeFilterX = Ext.extend(Ext.tree.TreeFilter, {
|
||||||
|
/**
|
||||||
|
* @cfg {Boolean} expandOnFilter Deeply expands startNode before filtering
|
||||||
|
* (defaults to true)
|
||||||
|
*/
|
||||||
|
expandOnFilter : true
|
||||||
|
|
||||||
|
// {{{
|
||||||
|
/**
|
||||||
|
* Filter the data by a specific attribute.
|
||||||
|
*
|
||||||
|
* @param {String/RegExp}
|
||||||
|
* value Either string that the attribute value should start with
|
||||||
|
* or a RegExp to test against the attribute
|
||||||
|
* @param {String}
|
||||||
|
* attr (optional) The attribute passed in your node's attributes
|
||||||
|
* collection. Defaults to "text".
|
||||||
|
* @param {TreeNode}
|
||||||
|
* startNode (optional) The node to start the filter at.
|
||||||
|
*/
|
||||||
|
,
|
||||||
|
filter : function(value, attr, startNode) {
|
||||||
|
|
||||||
|
// expand start node
|
||||||
|
if (false !== this.expandOnFilter) {
|
||||||
|
startNode = startNode || this.tree.root;
|
||||||
|
var animate = this.tree.animate;
|
||||||
|
this.tree.animate = false;
|
||||||
|
startNode.expand(true, false, function() {
|
||||||
|
|
||||||
|
// call parent after expand
|
||||||
|
Ext.ux.tree.TreeFilterX.superclass.filter.call(this, value,
|
||||||
|
attr, startNode);
|
||||||
|
|
||||||
|
}.createDelegate(this));
|
||||||
|
this.tree.animate = animate;
|
||||||
|
} else {
|
||||||
|
// call parent
|
||||||
|
Ext.ux.tree.TreeFilterX.superclass.filter.apply(this, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // eo function filter
|
||||||
|
// }}}
|
||||||
|
// {{{
|
||||||
|
/**
|
||||||
|
* Filter by a function. The passed function will be called with each node
|
||||||
|
* in the tree (or from the startNode). If the function returns true, the
|
||||||
|
* node is kept otherwise it is filtered. If a node is filtered, its
|
||||||
|
* children are also filtered. Shows parents of matching nodes.
|
||||||
|
*
|
||||||
|
* @param {Function}
|
||||||
|
* fn The filter function
|
||||||
|
* @param {Object}
|
||||||
|
* scope (optional) The scope of the function (defaults to the
|
||||||
|
* current node)
|
||||||
|
*/
|
||||||
|
,
|
||||||
|
filterBy : function(fn, scope, startNode) {
|
||||||
|
startNode = startNode || this.tree.root;
|
||||||
|
if (this.autoClear) {
|
||||||
|
this.clear();
|
||||||
|
}
|
||||||
|
var af = this.filtered, rv = this.reverse;
|
||||||
|
|
||||||
|
var f = function(n) {
|
||||||
|
if (n === startNode) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (af[n.id]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var m = fn.call(scope || n, n);
|
||||||
|
if (!m || rv) {
|
||||||
|
af[n.id] = n;
|
||||||
|
n.ui.hide();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
n.ui.show();
|
||||||
|
var p = n.parentNode;
|
||||||
|
while (p && p !== this.root) {
|
||||||
|
p.ui.show();
|
||||||
|
p = p.parentNode;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
startNode.cascade(f);
|
||||||
|
|
||||||
|
if (this.remove) {
|
||||||
|
for ( var id in af) {
|
||||||
|
if (typeof id != "function") {
|
||||||
|
var n = af[id];
|
||||||
|
if (n && n.parentNode) {
|
||||||
|
n.parentNode.removeChild(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // eo function filterBy
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
}); // eo extend
|
||||||
|
|
||||||
|
// eof
|
||||||
@@ -24,7 +24,12 @@ class AppFolder extends BaseAppFolder {
|
|||||||
* @param strin(32) $folderParent
|
* @param strin(32) $folderParent
|
||||||
* @return Ambigous <>|number
|
* @return Ambigous <>|number
|
||||||
*/
|
*/
|
||||||
function createFolder($folderName, $folderParent = "/") {
|
function createFolder($folderName, $folderParent = "/", $action="createifnotexists") {
|
||||||
|
$validActions=array("createifnotexists","create","update");
|
||||||
|
if(!in_array($action,$validActions)) $action="createifnotexists";
|
||||||
|
//Clean Folder and Parent names (delete spaces...)
|
||||||
|
$folderName=trim($folderName);
|
||||||
|
$folderParent=trim($folderParent);
|
||||||
//Try to Load the folder (Foldername+FolderParent)
|
//Try to Load the folder (Foldername+FolderParent)
|
||||||
$oCriteria = new Criteria ( 'workflow' );
|
$oCriteria = new Criteria ( 'workflow' );
|
||||||
$oCriteria->add ( AppFolderPeer::FOLDER_NAME, $folderName );
|
$oCriteria->add ( AppFolderPeer::FOLDER_NAME, $folderName );
|
||||||
@@ -32,11 +37,13 @@ class AppFolder extends BaseAppFolder {
|
|||||||
$oDataset = AppFolderPeer::doSelectRS ( $oCriteria );
|
$oDataset = AppFolderPeer::doSelectRS ( $oCriteria );
|
||||||
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
||||||
$oDataset->next ();
|
$oDataset->next ();
|
||||||
if ($aRow = $oDataset->getRow ()) { //Folder exist, then return the ID
|
if ($aRow = $oDataset->getRow ()) {//Folder exist, then return the ID
|
||||||
return ($aRow ['FOLDER_UID']);
|
$response['success']=false;
|
||||||
} else { //Folder doesn't exist. Create and return the ID
|
$response['message']=$response['error']="Can't create folder <br /> A folder with same name already exists. <br /> $folderParent$folderName";
|
||||||
|
$response['folderUID']=$aRow ['FOLDER_UID'];
|
||||||
|
//return ($aRow ['FOLDER_UID']);
|
||||||
|
return ($response);
|
||||||
|
} else {//Folder doesn't exist. Create and return the ID
|
||||||
$folderUID = G::GenerateUniqueID ();
|
$folderUID = G::GenerateUniqueID ();
|
||||||
$tr = new AppFolder ( );
|
$tr = new AppFolder ( );
|
||||||
$tr->setFolderUid ( $folderUID );
|
$tr->setFolderUid ( $folderUID );
|
||||||
@@ -47,7 +54,11 @@ class AppFolder extends BaseAppFolder {
|
|||||||
if ($tr->validate ()) {
|
if ($tr->validate ()) {
|
||||||
// we save it, since we get no validation errors, or do whatever else you like.
|
// we save it, since we get no validation errors, or do whatever else you like.
|
||||||
$res = $tr->save ();
|
$res = $tr->save ();
|
||||||
return $folderUID;
|
$response['success']=true;
|
||||||
|
$response['message']=$response['error']="Folder successfully created. <br /> $folderParent$folderName";
|
||||||
|
$response['folderUID']=$folderUID;
|
||||||
|
return ($response);
|
||||||
|
//return $folderUID;
|
||||||
} else {
|
} else {
|
||||||
// Something went wrong. We can now get the validationFailures and handle them.
|
// Something went wrong. We can now get the validationFailures and handle them.
|
||||||
$msg = '';
|
$msg = '';
|
||||||
@@ -55,7 +66,10 @@ class AppFolder extends BaseAppFolder {
|
|||||||
foreach ( $validationFailuresArray as $objValidationFailure ) {
|
foreach ( $validationFailuresArray as $objValidationFailure ) {
|
||||||
$msg .= $objValidationFailure->getMessage () . "<br/>";
|
$msg .= $objValidationFailure->getMessage () . "<br/>";
|
||||||
}
|
}
|
||||||
krumo ( $msg );
|
$response['success']=false;
|
||||||
|
|
||||||
|
$response['message']=$response['error']="Can't create folder \n A \n ".$msg;
|
||||||
|
return ($response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,8 +80,8 @@ class AppFolder extends BaseAppFolder {
|
|||||||
*/
|
*/
|
||||||
function createFromPath($folderPath, $sessionID = "") {
|
function createFromPath($folderPath, $sessionID = "") {
|
||||||
if ($sessionID == "")
|
if ($sessionID == "")
|
||||||
$sessionID = $_SESSION ['APPLICATION'];
|
$sessionID = $_SESSION ['APPLICATION'];
|
||||||
//Get current Application Fields
|
//Get current Application Fields
|
||||||
$oApplication = new Application ( );
|
$oApplication = new Application ( );
|
||||||
|
|
||||||
$appFields = $oApplication->Load ( $sessionID );
|
$appFields = $oApplication->Load ( $sessionID );
|
||||||
@@ -80,7 +94,8 @@ class AppFolder extends BaseAppFolder {
|
|||||||
$folderRoot = "/"; //Always starting from Root
|
$folderRoot = "/"; //Always starting from Root
|
||||||
foreach ( $folderPathParsedArray as $folderName ) {
|
foreach ( $folderPathParsedArray as $folderName ) {
|
||||||
if (trim ( $folderName ) != "") {
|
if (trim ( $folderName ) != "") {
|
||||||
$folderRoot = $this->createFolder ( $folderName, $folderRoot );
|
$response = $this->createFolder ( $folderName, $folderRoot );
|
||||||
|
$folderRoot=$response['folderUID'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $folderRoot != "/" ? $folderRoot : "";
|
return $folderRoot != "/" ? $folderRoot : "";
|
||||||
@@ -94,8 +109,8 @@ class AppFolder extends BaseAppFolder {
|
|||||||
function parseTags($fileTags, $sessionID = "") {
|
function parseTags($fileTags, $sessionID = "") {
|
||||||
|
|
||||||
if ($sessionID == "")
|
if ($sessionID == "")
|
||||||
$sessionID = $_SESSION ['APPLICATION'];
|
$sessionID = $_SESSION ['APPLICATION'];
|
||||||
//Get current Application Fields
|
//Get current Application Fields
|
||||||
$oApplication = new Application ( );
|
$oApplication = new Application ( );
|
||||||
|
|
||||||
$appFields = $oApplication->Load ( $sessionID );
|
$appFields = $oApplication->Load ( $sessionID );
|
||||||
@@ -195,7 +210,11 @@ class AppFolder extends BaseAppFolder {
|
|||||||
|
|
||||||
$oCase->verifyTable ();
|
$oCase->verifyTable ();
|
||||||
|
|
||||||
|
$oCriteria->setOffset(0);
|
||||||
|
$oCriteria->setLimit(150);
|
||||||
|
|
||||||
$oCriteria->addAscendingOrderByColumn ( AppDocumentPeer::APP_DOC_INDEX );
|
$oCriteria->addAscendingOrderByColumn ( AppDocumentPeer::APP_DOC_INDEX );
|
||||||
|
$oCriteria->addDescendingOrderByColumn ( AppDocumentPeer::DOC_VERSION );
|
||||||
|
|
||||||
$rs = AppDocumentPeer::doSelectRS ( $oCriteria );
|
$rs = AppDocumentPeer::doSelectRS ( $oCriteria );
|
||||||
$rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
$rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
|
||||||
@@ -206,11 +225,12 @@ class AppFolder extends BaseAppFolder {
|
|||||||
$oApp = new Application ( );
|
$oApp = new Application ( );
|
||||||
if (($oApp->exists ( $row ['APP_UID'] )) || ($row ['APP_UID'] == "00000000000000000000000000000000")) {
|
if (($oApp->exists ( $row ['APP_UID'] )) || ($row ['APP_UID'] == "00000000000000000000000000000000")) {
|
||||||
|
|
||||||
|
$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']);
|
||||||
$completeInfo = $this->getCompleteDocumentInfo ( $row ['APP_UID'], $row ['APP_DOC_UID'], $row ['DOC_VERSION'], $row ['DOC_UID'], $row ['USR_UID'] );
|
$completeInfo = $this->getCompleteDocumentInfo ( $row ['APP_UID'], $row ['APP_DOC_UID'], $row ['DOC_VERSION'], $row ['DOC_UID'], $row ['USR_UID'] );
|
||||||
|
|
||||||
$oAppDocument = new AppDocument ( );
|
$oAppDocument = new AppDocument ( );
|
||||||
$lastVersion = $oAppDocument->getLastAppDocVersion ( $row ['APP_DOC_UID'], $row ['APP_UID'] );
|
$lastVersion = $oAppDocument->getLastAppDocVersion ( $row ['APP_DOC_UID'], $row ['APP_UID'] );
|
||||||
|
$filesResult [] = $completeInfo;
|
||||||
if ($completeInfo ['APP_DOC_STATUS'] != "DELETED") {
|
if ($completeInfo ['APP_DOC_STATUS'] != "DELETED") {
|
||||||
if ((in_array ( $row ['APP_DOC_UID'], $completeInfo ['INPUT_DOCUMENTS'] )) || (in_array ( $row ['APP_DOC_UID'], $completeInfo ['OUTPUT_DOCUMENTS'] )) || (in_array ( $completeInfo ['USR_UID'], array ($_SESSION ['USER_LOGGED'], '-1' ) ))) {
|
if ((in_array ( $row ['APP_DOC_UID'], $completeInfo ['INPUT_DOCUMENTS'] )) || (in_array ( $row ['APP_DOC_UID'], $completeInfo ['OUTPUT_DOCUMENTS'] )) || (in_array ( $completeInfo ['USR_UID'], array ($_SESSION ['USER_LOGGED'], '-1' ) ))) {
|
||||||
if (count ( $docIdFilter ) > 0) {
|
if (count ( $docIdFilter ) > 0) {
|
||||||
@@ -319,7 +339,7 @@ class AppFolder extends BaseAppFolder {
|
|||||||
|
|
||||||
}
|
}
|
||||||
$oUser = new Users ( );
|
$oUser = new Users ( );
|
||||||
if ($usrId != "-1") {
|
if (($usrId != "-1")&&($oUser->userExists($usrId))) {
|
||||||
$row5 = $oUser->load ( $usrId );
|
$row5 = $oUser->load ( $usrId );
|
||||||
} else {
|
} else {
|
||||||
$row5 ['USR_USERNAME'] = "***";
|
$row5 ['USR_USERNAME'] = "***";
|
||||||
@@ -408,7 +428,7 @@ class AppFolder extends BaseAppFolder {
|
|||||||
$fileTags = explode ( ",", $fileInfo ['APP_DOC_TAGS'] );
|
$fileTags = explode ( ",", $fileInfo ['APP_DOC_TAGS'] );
|
||||||
foreach ( $fileTags as $key1 => $tag ) {
|
foreach ( $fileTags as $key1 => $tag ) {
|
||||||
if (! (isset ( $tagsInfo [$tag] )))
|
if (! (isset ( $tagsInfo [$tag] )))
|
||||||
$tagsInfo [$tag] = 0;
|
$tagsInfo [$tag] = 0;
|
||||||
$tagsInfo [$tag] ++;
|
$tagsInfo [$tag] ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,24 @@ class Users extends BaseUsers {
|
|||||||
throw($e);
|
throw($e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function userExists($UsrUid)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$oRow = UsersPeer::retrieveByPK( $UsrUid );
|
||||||
|
if (!is_null($oRow))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception $oError) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function load($UsrUid)
|
public function load($UsrUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
$G_TMP_MENU->AddIdRawOption('CASES_HOME', 'casesStartPage', G::LoadTranslation('ID_CASES_START_PAGE'), '', '', 'blockHeader');
|
$G_TMP_MENU->AddIdRawOption('CASES_HOME', 'casesStartPage', G::LoadTranslation('ID_CASES_START_PAGE'), '', '', 'blockHeader');
|
||||||
|
|
||||||
//$G_TMP_MENU->AddIdRawOption('CASES_FOLDERS', 'casesStartPage?action=documents', G::LoadTranslation('ID_FOLDERS'), 'folderV2.gif' );
|
$G_TMP_MENU->AddIdRawOption('CASES_FOLDERS', 'casesStartPage?action=documents', G::LoadTranslation('ID_FOLDERS'), 'folderV2.gif' );
|
||||||
//$G_TMP_MENU->AddIdRawOption('CASES_START_PAGE', 'casesStartPage?action=mainDashboard', ucwords(strtolower(G::LoadTranslation('ID_DASHBOARD'))), '' );
|
//$G_TMP_MENU->AddIdRawOption('CASES_START_PAGE', 'casesStartPage?action=mainDashboard', ucwords(strtolower(G::LoadTranslation('ID_DASHBOARD'))), '' );
|
||||||
|
|
||||||
//Load Other registered Dashboards (From plugins)
|
//Load Other registered Dashboards (From plugins)
|
||||||
|
|||||||
@@ -5,6 +5,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
$oHeadPublisher =& headPublisher::getSingleton();
|
$oHeadPublisher =& headPublisher::getSingleton();
|
||||||
|
//$oHeadPublisher->setExtSkin( 'xtheme-gray');
|
||||||
|
//$oHeadPublisher->usingExtJs('ux/TabCloseMenu');
|
||||||
|
|
||||||
|
|
||||||
|
$oHeadPublisher->usingExtJs('ux.treefilterx/Ext.ux.tree.TreeFilterX');
|
||||||
|
$oHeadPublisher->usingExtJs('ux.locationbar/Ext.ux.LocationBar');
|
||||||
|
$oHeadPublisher->usingExtJs('ux.statusbar/ext-statusbar');
|
||||||
|
//$oHeadPublisher->usingExtJs('ux/ColumnHeaderGroup');
|
||||||
$oHeadPublisher->addExtJsScript('cases/casesStartPage', false); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript('cases/casesStartPage', false); //adding a javascript file .js
|
||||||
$oHeadPublisher->addContent( 'cases/casesStartPage'); //adding a html file .html.
|
$oHeadPublisher->addContent( 'cases/casesStartPage'); //adding a html file .html.
|
||||||
|
|
||||||
|
|||||||
BIN
workflow/public_html/images/documents/_.gif
Executable file
|
After Width: | Height: | Size: 43 B |
BIN
workflow/public_html/images/documents/_accept.png
Executable file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
workflow/public_html/images/documents/_admin.gif
Executable file
|
After Width: | Height: | Size: 639 B |
BIN
workflow/public_html/images/documents/_archive.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/_arrowdown.gif
Executable file
|
After Width: | Height: | Size: 70 B |
BIN
workflow/public_html/images/documents/_arrowup.gif
Executable file
|
After Width: | Height: | Size: 70 B |
BIN
workflow/public_html/images/documents/_bookmark_add.png
Executable file
|
After Width: | Height: | Size: 665 B |
BIN
workflow/public_html/images/documents/_cancel.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/_chmod.png
Executable file
|
After Width: | Height: | Size: 774 B |
BIN
workflow/public_html/images/documents/_down.png
Executable file
|
After Width: | Height: | Size: 912 B |
BIN
workflow/public_html/images/documents/_edit.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/_editcopy.png
Executable file
|
After Width: | Height: | Size: 730 B |
BIN
workflow/public_html/images/documents/_editdelete.png
Executable file
|
After Width: | Height: | Size: 860 B |
BIN
workflow/public_html/images/documents/_extract.gif
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/_extract.png
Executable file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
workflow/public_html/images/documents/_filefind.png
Executable file
|
After Width: | Height: | Size: 813 B |
BIN
workflow/public_html/images/documents/_filenew.png
Executable file
|
After Width: | Height: | Size: 805 B |
BIN
workflow/public_html/images/documents/_folder_new.png
Executable file
|
After Width: | Height: | Size: 718 B |
BIN
workflow/public_html/images/documents/_fonts.png
Executable file
|
After Width: | Height: | Size: 892 B |
BIN
workflow/public_html/images/documents/_help.png
Executable file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
workflow/public_html/images/documents/_home.gif
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/_home.png
Executable file
|
After Width: | Height: | Size: 618 B |
BIN
workflow/public_html/images/documents/_indicator.gif
Executable file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
workflow/public_html/images/documents/_log_error.png
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
workflow/public_html/images/documents/_logout.png
Executable file
|
After Width: | Height: | Size: 995 B |
BIN
workflow/public_html/images/documents/_messagebox_warning.png
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
workflow/public_html/images/documents/_move.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/_reload.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/_remove.png
Executable file
|
After Width: | Height: | Size: 752 B |
BIN
workflow/public_html/images/documents/_rename.gif
Executable file
|
After Width: | Height: | Size: 409 B |
BIN
workflow/public_html/images/documents/_rename_.gif
Executable file
|
After Width: | Height: | Size: 1022 B |
BIN
workflow/public_html/images/documents/_save.png
Executable file
|
After Width: | Height: | Size: 898 B |
BIN
workflow/public_html/images/documents/_up.png
Executable file
|
After Width: | Height: | Size: 906 B |
BIN
workflow/public_html/images/documents/_view.png
Executable file
|
After Width: | Height: | Size: 916 B |
BIN
workflow/public_html/images/documents/extension/avi.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/bmp.png
Executable file
|
After Width: | Height: | Size: 824 B |
BIN
workflow/public_html/images/documents/extension/bz2.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/c.png
Executable file
|
After Width: | Height: | Size: 817 B |
BIN
workflow/public_html/images/documents/extension/cc.png
Executable file
|
After Width: | Height: | Size: 817 B |
BIN
workflow/public_html/images/documents/extension/cgi.png
Executable file
|
After Width: | Height: | Size: 987 B |
BIN
workflow/public_html/images/documents/extension/class.png
Executable file
|
After Width: | Height: | Size: 806 B |
BIN
workflow/public_html/images/documents/extension/cpp.png
Executable file
|
After Width: | Height: | Size: 817 B |
BIN
workflow/public_html/images/documents/extension/css.png
Executable file
|
After Width: | Height: | Size: 941 B |
BIN
workflow/public_html/images/documents/extension/cxx.png
Executable file
|
After Width: | Height: | Size: 817 B |
BIN
workflow/public_html/images/documents/extension/dhtml.png
Executable file
|
After Width: | Height: | Size: 951 B |
BIN
workflow/public_html/images/documents/extension/doc.png
Executable file
|
After Width: | Height: | Size: 943 B |
BIN
workflow/public_html/images/documents/extension/document.png
Executable file
|
After Width: | Height: | Size: 948 B |
BIN
workflow/public_html/images/documents/extension/docx.png
Executable file
|
After Width: | Height: | Size: 943 B |
BIN
workflow/public_html/images/documents/extension/exe.png
Executable file
|
After Width: | Height: | Size: 987 B |
BIN
workflow/public_html/images/documents/extension/folder.png
Executable file
|
After Width: | Height: | Size: 558 B |
BIN
workflow/public_html/images/documents/extension/fon.png
Executable file
|
After Width: | Height: | Size: 892 B |
BIN
workflow/public_html/images/documents/extension/gif.png
Executable file
|
After Width: | Height: | Size: 824 B |
BIN
workflow/public_html/images/documents/extension/gz.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/extension/h.png
Executable file
|
After Width: | Height: | Size: 776 B |
BIN
workflow/public_html/images/documents/extension/hpp.png
Executable file
|
After Width: | Height: | Size: 776 B |
BIN
workflow/public_html/images/documents/extension/htm.png
Executable file
|
After Width: | Height: | Size: 951 B |
BIN
workflow/public_html/images/documents/extension/html.png
Executable file
|
After Width: | Height: | Size: 951 B |
BIN
workflow/public_html/images/documents/extension/inc.png
Executable file
|
After Width: | Height: | Size: 980 B |
BIN
workflow/public_html/images/documents/extension/jar.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/extension/java.png
Executable file
|
After Width: | Height: | Size: 806 B |
BIN
workflow/public_html/images/documents/extension/jpeg.png
Executable file
|
After Width: | Height: | Size: 824 B |
BIN
workflow/public_html/images/documents/extension/jpg.png
Executable file
|
After Width: | Height: | Size: 824 B |
BIN
workflow/public_html/images/documents/extension/js.png
Executable file
|
After Width: | Height: | Size: 262 B |
BIN
workflow/public_html/images/documents/extension/m3u.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/midi.png
Executable file
|
After Width: | Height: | Size: 779 B |
BIN
workflow/public_html/images/documents/extension/mov.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/mp3.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/mpeg.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/mpg.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/pdf.png
Executable file
|
After Width: | Height: | Size: 857 B |
BIN
workflow/public_html/images/documents/extension/php.png
Executable file
|
After Width: | Height: | Size: 997 B |
BIN
workflow/public_html/images/documents/extension/php3.png
Executable file
|
After Width: | Height: | Size: 997 B |
BIN
workflow/public_html/images/documents/extension/php4.png
Executable file
|
After Width: | Height: | Size: 997 B |
BIN
workflow/public_html/images/documents/extension/php5.png
Executable file
|
After Width: | Height: | Size: 997 B |
BIN
workflow/public_html/images/documents/extension/phtml.png
Executable file
|
After Width: | Height: | Size: 997 B |
BIN
workflow/public_html/images/documents/extension/pl.png
Executable file
|
After Width: | Height: | Size: 669 B |
BIN
workflow/public_html/images/documents/extension/pls.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/png.png
Executable file
|
After Width: | Height: | Size: 824 B |
BIN
workflow/public_html/images/documents/extension/py.png
Executable file
|
After Width: | Height: | Size: 865 B |
BIN
workflow/public_html/images/documents/extension/ra.png
Executable file
|
After Width: | Height: | Size: 924 B |
BIN
workflow/public_html/images/documents/extension/ram.png
Executable file
|
After Width: | Height: | Size: 924 B |
BIN
workflow/public_html/images/documents/extension/rar.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/rm.png
Executable file
|
After Width: | Height: | Size: 924 B |
BIN
workflow/public_html/images/documents/extension/sh.png
Executable file
|
After Width: | Height: | Size: 977 B |
BIN
workflow/public_html/images/documents/extension/shtml.png
Executable file
|
After Width: | Height: | Size: 951 B |
BIN
workflow/public_html/images/documents/extension/sql.png
Executable file
|
After Width: | Height: | Size: 977 B |
BIN
workflow/public_html/images/documents/extension/swf.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/tar.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/tbz.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
workflow/public_html/images/documents/extension/tgz.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
workflow/public_html/images/documents/extension/txt.gif
Executable file
|
After Width: | Height: | Size: 1.2 KiB |