New function Scholar.Items.getNewItemByType(itemTypeID [, parentFolderID] [, orderIndex]) to get empty Item object -- parentFolderID and orderIndex are optional
This commit is contained in:
parent
7aecfd5190
commit
605510a635
1 changed files with 27 additions and 7 deletions
|
@ -9,7 +9,9 @@ Scholar.Item = function(){
|
|||
// Accept itemTypeID, folderID and orderIndex in constructor
|
||||
if (arguments.length){
|
||||
this.setType(arguments[0]);
|
||||
this.setPosition(arguments[1],arguments[2]);
|
||||
if (arguments.length>1){
|
||||
this.setPosition(arguments[1], arguments[2] ? arguments[2] : false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -309,16 +311,19 @@ Scholar.Item.prototype.setField = function(field, value, loadIn){
|
|||
/*
|
||||
* Move item to new position and shift surrounding items
|
||||
*
|
||||
* N.B. Unless isNew is set, this function updates the DB immediately and
|
||||
* N.B. Unless isNew is set or the item doesn't yet have an id,
|
||||
* this function updates the DB immediately and
|
||||
* reloads all cached items -- a save() is not required
|
||||
*
|
||||
* If isNew is true, a transaction is not started or committed, so it
|
||||
* should only be run from an existing transaction within save()
|
||||
* If isNew is true, a transaction is not started or committed, so if
|
||||
* the item has an id it should only be run from an existing transaction
|
||||
* within Scholar.Item.save()
|
||||
*/
|
||||
Scholar.Item.prototype.setPosition = function(newFolder, newPos, isNew){
|
||||
var oldFolder = this.getField('parentFolderID');
|
||||
var oldPos = this.getField('orderIndex');
|
||||
|
||||
|
||||
if (this.getID()){
|
||||
if (newFolder==oldFolder && newPos==oldPos){
|
||||
return true;
|
||||
|
@ -328,6 +333,15 @@ Scholar.Item.prototype.setPosition = function(newFolder, newPos, isNew){
|
|||
Scholar.DB.beginTransaction();
|
||||
}
|
||||
|
||||
if (!newFolder){
|
||||
newFolder = 0;
|
||||
}
|
||||
// Do a foreign key check manually
|
||||
else if (!parseInt(Scholar.DB.valueQuery('SELECT COUNT(*) FROM folders '
|
||||
+ 'WHERE folderID=' + newFolder))){
|
||||
throw('Attempt to add item to invalid folder');
|
||||
}
|
||||
|
||||
// If no position provided, drop at end of folder
|
||||
if (!newPos){
|
||||
newPos = Scholar.DB.valueQuery('SELECT MAX(orderIndex)+1 FROM ' +
|
||||
|
@ -369,7 +383,7 @@ Scholar.Item.prototype.setPosition = function(newFolder, newPos, isNew){
|
|||
this._data['parentFolderID'] = newFolder;
|
||||
this._data['orderIndex'] = newPos;
|
||||
|
||||
if (!isNew){
|
||||
if (this.getID() && !isNew){
|
||||
Scholar.Items.reloadAll();
|
||||
}
|
||||
return true;
|
||||
|
@ -642,10 +656,10 @@ Scholar.Item.prototype.save = function(){
|
|||
|
||||
|
||||
// Set the position of the new item
|
||||
var newFolder = this._changed.has('parentFolderID')
|
||||
var newFolder = this.getField('parentFolderID')
|
||||
? this.getField('parentFolderID') : 0;
|
||||
|
||||
var newPos = this._changed.has('orderIndex')
|
||||
var newPos = this.getField('orderIndex')
|
||||
? this.getField('orderIndex') : false;
|
||||
|
||||
this.setPosition(newFolder, newPos, true);
|
||||
|
@ -760,6 +774,7 @@ Scholar.Items = new function(){
|
|||
this.getTreeRows = getTreeRows;
|
||||
this.reload = reload;
|
||||
this.reloadAll = reloadAll;
|
||||
this.getNewItemByType = getNewItemByType;
|
||||
|
||||
/*
|
||||
* Retrieves (and loads, if necessary) an arbitrary number of items
|
||||
|
@ -903,6 +918,11 @@ Scholar.Items = new function(){
|
|||
}
|
||||
|
||||
|
||||
function getNewItemByType(itemTypeID, parentFolderID, orderIndex){
|
||||
return new Scholar.Item(itemTypeID, parentFolderID, orderIndex);
|
||||
}
|
||||
|
||||
|
||||
function add(data, itemTypeID, folderID, orderIndex){
|
||||
var insert = new Array();
|
||||
|
||||
|
|
Loading…
Reference in a new issue