- Remove empty creators from the database -- they shouldn't exist and were causing sync errors for some people
- Better logging for errors in metadata pane
This commit is contained in:
parent
f018e7d433
commit
3ca64f746a
4 changed files with 49 additions and 2 deletions
|
@ -1488,6 +1488,7 @@
|
|||
<parameter name="textbox"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
try {
|
||||
Zotero.debug('Hiding editor');
|
||||
/*
|
||||
var textbox = Zotero.getAncestorByTagName(t, 'textbox');
|
||||
|
@ -1666,6 +1667,13 @@
|
|||
}
|
||||
this._focusNextField(focusMode, focusBox, this._lastTabIndex, this._tabDirection == -1);
|
||||
}
|
||||
}
|
||||
// Thrown errors don't seem to show up within XBL without explicit logging
|
||||
catch (e) {
|
||||
Zotero.debug(e);
|
||||
Components.utils.reportError(e);
|
||||
throw (e);
|
||||
}
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
@ -1802,6 +1810,8 @@
|
|||
<parameter name="changeGlobally"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
try {
|
||||
|
||||
var libraryID = this.item.libraryID;
|
||||
var firstName = fields.firstName;
|
||||
var lastName = fields.lastName;
|
||||
|
@ -1927,6 +1937,13 @@
|
|||
}
|
||||
|
||||
Zotero.DB.commitTransaction();
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.debug(e);
|
||||
Components.utils.reportError(e);
|
||||
throw (e);
|
||||
}
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
|
|
@ -2372,6 +2372,20 @@ Zotero.Schema = new function(){
|
|||
Zotero.DB.query("UPDATE creatorData SET shortName='' WHERE shortName IS NULL");
|
||||
Zotero.DB.query("UPDATE creatorData SET birthYear=NULL WHERE birthYear=''");
|
||||
}
|
||||
|
||||
if (i==55) {
|
||||
Zotero.DB.query("CREATE TEMPORARY TABLE tmpEmptyCreators AS SELECT creatorID FROM creators WHERE creatorDataID IN (SELECT creatorDataID FROM creatorData WHERE firstName='' AND lastName='')");
|
||||
Zotero.DB.query("INSERT INTO syncDeleteLog SELECT 2, libraryID, key, CURRENT_TIMESTAMP FROM creators WHERE creatorID IN (SELECT creatorID FROM tmpEmptyCreators)");
|
||||
var rows = Zotero.DB.query("SELECT * FROM itemCreators WHERE creatorID IN (SELECT creatorID FROM tmpEmptyCreators) ORDER BY orderIndex DESC");
|
||||
for each(var row in rows) {
|
||||
Zotero.DB.query("DELETE FROM itemCreators WHERE itemID=? AND creatorID=? AND orderIndex=?", [row.itemID, row.creatorID, row.orderIndex]);
|
||||
Zotero.DB.query("UPDATE itemCreators SET orderIndex=orderIndex-1 WHERE itemID=? AND orderIndex>?", [row.itemID, row.orderIndex]);
|
||||
}
|
||||
Zotero.DB.query("DELETE FROM itemCreators WHERE creatorID IN (SELECT creatorID FROM tmpEmptyCreators)");
|
||||
Zotero.DB.query("DELETE FROM creators WHERE creatorDataID IN (SELECT creatorDataID FROM creatorData WHERE firstName='' AND lastName='')");
|
||||
Zotero.DB.query("DROP TABLE tmpEmptyCreators");
|
||||
Zotero.DB.query("DELETE FROM creatorData WHERE firstName='' AND lastName=''");
|
||||
}
|
||||
}
|
||||
|
||||
_updateDBVersion('userdata', toVersion);
|
||||
|
|
18
triggers.sql
18
triggers.sql
|
@ -1,4 +1,4 @@
|
|||
-- 9
|
||||
-- 10
|
||||
|
||||
-- Triggers to validate date field
|
||||
DROP TRIGGER IF EXISTS insert_date_field;
|
||||
|
@ -28,6 +28,22 @@ CREATE TRIGGER update_date_field BEFORE UPDATE ON itemData
|
|||
END;
|
||||
|
||||
|
||||
-- Don't allow empty creators
|
||||
DROP TRIGGER IF EXISTS insert_creatorData;
|
||||
CREATE TRIGGER insert_creatorData BEFORE INSERT ON creatorData
|
||||
FOR EACH ROW WHEN NEW.firstName='' AND NEW.lastName=''
|
||||
BEGIN
|
||||
SELECT RAISE (ABORT, 'Creator names cannot be empty');
|
||||
END;
|
||||
|
||||
DROP TRIGGER IF EXISTS update_creatorData;
|
||||
CREATE TRIGGER update_creatorData BEFORE UPDATE ON creatorData
|
||||
FOR EACH ROW WHEN NEW.firstName='' AND NEW.lastName=''
|
||||
BEGIN
|
||||
SELECT RAISE (ABORT, 'Creator names cannot be empty');
|
||||
END;
|
||||
|
||||
|
||||
--
|
||||
-- Fake foreign key constraint checks using triggers
|
||||
--
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
-- 54
|
||||
-- 55
|
||||
|
||||
-- This file creates tables containing user-specific data for new users --
|
||||
-- any changes made here must be mirrored in transition steps in schema.js::_migrateSchema()
|
||||
|
|
Loading…
Add table
Reference in a new issue