1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-17 22:47:59 +00:00
seahub/media/aloha-0.22.7/lib/aloha/repository.js
llj 720ac28c22 [aloha] upgraded to 0.22.7 and added textcolor plugin
* textcolor: fixed plugin bugs, added translation for zh
* image: fixed default.jpg src bug
* added 'ru' support for seaf edit
* rm aloha-0.22.3 and ununsed files in aloha-0.22.7
2013-01-15 14:48:04 +08:00

256 lines
9.4 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* repository.js is part of Aloha Editor project http://aloha-editor.org
*
* Aloha Editor is a WYSIWYG HTML5 inline editing library and editor.
* Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria.
* Contributors http://aloha-editor.org/contribution.php
*
* Aloha Editor is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* Aloha Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* As an additional permission to the GNU GPL version 2, you may distribute
* non-source (e.g., minimized or compacted) forms of the Aloha-Editor
* source code without the copy of the GNU GPL normally required,
* provided you include this license notice and a URL through which
* recipients can access the Corresponding Source.
*/
define([
'aloha/core',
'util/class',
'aloha/repositorymanager'
], function (
Aloha,
Class,
RepositoryManager
) {
"use strict";
// var
// $ = jQuery,
// GENTICS = window.GENTICS,
// Aloha = window.Aloha,
// Class = window.Class;
/**
* Abstract Repository Class. Implement that class for your own repository.
* @namespace Aloha.Repository
* @class Repository
* @constructor
* @param {String} repositoryId unique repository identifier
* @param {String} repositoryName (optional) is the displyed name for this Repository instance
*/
var AbstractRepository = Class.extend({
_constructor: function (repositoryId, repositoryName) {
/**
* @property repositoryId is the unique Id for this Repository instance
*/
this.repositoryId = repositoryId;
/**
* contains the repository's settings object
* @property settings {Object} the repository's settings stored in an object
*/
this.settings = {};
/**
* @property repositoryName is the name for this Repository instance
*/
this.repositoryName = repositoryName || repositoryId;
RepositoryManager.register(this);
},
/**
* Init method of the repository. Called from Aloha Core to initialize this repository
* @return void
* @hide
*/
init: function () {},
/**
* Searches a repository for object items matching queryString if none found returns null.
* The returned object items must be an array of Aloha.Repository.Object
*
<pre><code>
// simple delicious implementation
Aloha.Repositories.myRepository.query = function (params, callback) {
// make local var of this to use in ajax function
var that = this;
// handle each word as tag
var tags = p.queryString.split(' ');
// if we have a query and no tag matching return
if ( p.queryString && tags.length == 0 ) {
callback.call( that, []);
return;
}
// no handling of objectTypeFilter, filter, inFolderId, etc...
// in real implementation you should handle all parameters
jQuery.ajax({ type: "GET",
dataType: "jsonp",
url: 'http://feeds.delicious.com/v2/json/' + tags.join('+'),
success: function(data) {
var items = [];
// convert data to Aloha objects
for (var i = 0; i < data.length; i++) {
if (typeof data[i] != 'function' ) {
items.push(new Aloha.Repository.Document ({
id: data[i].u,
name: data[i].d,
repositoryId: that.repositoryId,
type: 'website',
url: data[i].u
}));
}
}
callback.call( that, items);
}
});
};
</code></pre>
*
* @param {object} params object with properties
* <div class="mdetail-params"><ul>
* <li><code> queryString</code> : String <div class="sub-desc">The query string for full text search</div></li>
* <li><code> objectTypeFilter</code> : array (optional) <div class="sub-desc">Object types that will be returned.</div></li>
* <li><code> filter</code> : array (optional) <div class="sub-desc">Attributes that will be returned.</div></li>
* <li><code> inFolderId</code> : boolean (optional) <div class="sub-desc">This is indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).</div></li>
* <li><code> inTreeId</code> : boolean (optional) <div class="sub-desc">This indicates whether or not a candidate object is a descendant-object of the folder object identified by the given inTreeId (objectId).</div></li>
* <li><code> orderBy</code> : array (optional) <div class="sub-desc">ex. [{lastModificationDate:DESC, name:ASC}]</div></li>
* <li><code> maxItems</code> : Integer (optional) <div class="sub-desc">number items to return as result</div></li>
* <li><code> skipCount</code> : Integer (optional) <div class="sub-desc">This is tricky in a merged multi repository scenario</div></li>
* <li><code> renditionFilter</code> : array (optional) <div class="sub-desc">Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter</div></li>
* </ul></div>
* @param {function} callback this method must be called with all result items</div></li>
*/
query: null,
/*
query: function( params, callback ) {
if (typeof callback === 'function') {
callback([]);
}
},
*/
/**
* Returns all children of a given motherId.
*
* @param {object} params object with properties
* <div class="mdetail-params"><ul>
* <li><code> objectTypeFilter</code> : array (optional) <div class="sub-desc">Object types that will be returned.</div></li>
* <li><code> filter</code> : array (optional) <div class="sub-desc">Attributes that will be returned.</div></li>
* <li><code> inFolderId</code> : boolean (optional) <div class="sub-desc">This indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).</div></li>
* <li><code> orderBy</code> : array (optional) <div class="sub-desc">ex. [{lastModificationDate:DESC, name:ASC}]</div></li>
* <li><code> maxItems</code> : Integer (optional) <div class="sub-desc">number items to return as result</div></li>
* <li><code> skipCount</code> : Integer (optional) <div class="sub-desc">This is tricky in a merged multi repository scenario</div></li>
* <li><code> renditionFilter</code> : array (optional) <div class="sub-desc">Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter</div></li>
* </ul></div>
* @param {function} callback this method must be called with all result items
*/
getChildren: null,
/*
getChildren: function( params, callback ) {
if (typeof callback === 'function') {
callback([]);
}
},
*/
/**
* Make the given jQuery object (representing an object marked as object of this type)
* clean. All attributes needed for handling should be removed.
*
<pre><code>
Aloha.Repositories.myRepository.makeClean = function (obj) {
obj.removeAttr('data-myRepository-name');
};
</code></pre>
* @param {jQuery} obj jQuery object to make clean
* @return void
*/
makeClean: function (obj) {},
/**
* This method will be called when a user chooses an item from a repository and wants
* to insert this item in his content.
* Mark or modify an object as needed by that repository for handling, processing or identification.
* Objects can be any DOM object as A, SPAN, ABBR, etc. or
* special objects such as aloha-aloha_block elements.
* (see http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data)
*
<pre><code>
Aloha.Repositories.myRepository.markObject = function (obj, resourceItem) {
obj.attr('data-myRepository-name').text(resourceItem.name);
};
</code></pre>
*
*
* @param obj jQuery target object to which the repositoryItem will be applied
* @param repositoryItem The selected item. A class constructed from Document or Folder.
* @return void
*/
markObject: function (obj, repositoryItem) {},
/**
* Set a template for rendering objects of this repository
* @param {String} template
* @return void
* @method
*/
setTemplate: function (template) {
if (template) {
this.template = template;
} else {
this.template = null;
}
},
/**
* Checks whether the repository has a template
* @return {boolean} true when the repository has a template, false if not
* @method
*/
hasTemplate: function () {
return this.template ? true : false;
},
/**
* Get the parsed template
* @return {Object} parsed template
* @method
*/
getTemplate: function () {
return this.template;
},
/**
* Get the repositoryItem with given id
* @param itemId {String} id of the repository item to fetch
* @param callback {function} callback function
* @return {Aloha.Repository.Object} item with given id
*/
getObjectById: function (itemId, callback) {
return true;
}
});
// expose the AbstractRepository
Aloha.AbstractRepository = AbstractRepository;
return AbstractRepository;
});