- 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"/>
|
<parameter name="textbox"/>
|
||||||
<body>
|
<body>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
try {
|
||||||
Zotero.debug('Hiding editor');
|
Zotero.debug('Hiding editor');
|
||||||
/*
|
/*
|
||||||
var textbox = Zotero.getAncestorByTagName(t, 'textbox');
|
var textbox = Zotero.getAncestorByTagName(t, 'textbox');
|
||||||
|
@ -1666,6 +1667,13 @@
|
||||||
}
|
}
|
||||||
this._focusNextField(focusMode, focusBox, this._lastTabIndex, this._tabDirection == -1);
|
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>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
|
@ -1802,6 +1810,8 @@
|
||||||
<parameter name="changeGlobally"/>
|
<parameter name="changeGlobally"/>
|
||||||
<body>
|
<body>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
|
try {
|
||||||
|
|
||||||
var libraryID = this.item.libraryID;
|
var libraryID = this.item.libraryID;
|
||||||
var firstName = fields.firstName;
|
var firstName = fields.firstName;
|
||||||
var lastName = fields.lastName;
|
var lastName = fields.lastName;
|
||||||
|
@ -1927,6 +1937,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.DB.commitTransaction();
|
Zotero.DB.commitTransaction();
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Zotero.debug(e);
|
||||||
|
Components.utils.reportError(e);
|
||||||
|
throw (e);
|
||||||
|
}
|
||||||
]]>
|
]]>
|
||||||
</body>
|
</body>
|
||||||
</method>
|
</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 shortName='' WHERE shortName IS NULL");
|
||||||
Zotero.DB.query("UPDATE creatorData SET birthYear=NULL WHERE birthYear=''");
|
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);
|
_updateDBVersion('userdata', toVersion);
|
||||||
|
|
18
triggers.sql
18
triggers.sql
|
@ -1,4 +1,4 @@
|
||||||
-- 9
|
-- 10
|
||||||
|
|
||||||
-- Triggers to validate date field
|
-- Triggers to validate date field
|
||||||
DROP TRIGGER IF EXISTS insert_date_field;
|
DROP TRIGGER IF EXISTS insert_date_field;
|
||||||
|
@ -28,6 +28,22 @@ CREATE TRIGGER update_date_field BEFORE UPDATE ON itemData
|
||||||
END;
|
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
|
-- Fake foreign key constraint checks using triggers
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
-- 54
|
-- 55
|
||||||
|
|
||||||
-- This file creates tables containing user-specific data for new users --
|
-- 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()
|
-- any changes made here must be mirrored in transition steps in schema.js::_migrateSchema()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue