- In saved searches, use librayID_key hashes rather than ids for collections and saved searches (fixes inconsistent references across machines going forward, though it can't fix references that are already incorrect)

- Make "Saved Search" a separate search condition from 'Collection' in drop-down menu
- Better handle invalid search conditions
- (Dev) Saved search conditions are now 'collection' and 'savedSearch' rather than 'collectionID' and 'savedSearchID', though the latter can be used as shortcuts when adding

This could use some testing.
This commit is contained in:
Dan Stillman 2009-12-05 10:26:47 +00:00
parent f6c8494a6b
commit 9c5c02ef50
47 changed files with 198 additions and 113 deletions

View file

@ -96,7 +96,7 @@ var ZoteroAdvancedSearch = new function() {
}
var s = _searchBox.search.clone();
s.setName(name.value);
s.name = name.value;
s.save();
}

View file

@ -44,6 +44,7 @@
conditionsBox.removeChild(conditionsBox.firstChild);
var conditions = this.search.getSearchConditions();
for(var id in conditions)
{
// Checkboxes
@ -361,12 +362,10 @@
// Generate drop-down menu instead of textbox for certain conditions
switch (conditionsMenu.value){
case 'collectionID':
var merged = [];
case 'collection':
var rows = [];
var cols = Zotero.getCollections(false, true);
for (var i in cols)
{
for (var i in cols) {
// Indent subcollections
var indent = '';
if (cols[i].level) {
@ -375,19 +374,20 @@
}
indent += '- ';
}
merged.push([indent + cols[i].getName(), 'C' + cols[i].getID()]);
rows.push([indent + cols[i].name, 'C' + Zotero.Collections.getLibraryKeyHash(cols[i])]);
}
this.createValueMenu(rows);
break;
case 'savedSearch':
var rows = [];
var searches = Zotero.Searches.getAll();
for (var i in searches)
{
if (searches[i]['id'] != this.parent.search.getID())
{
merged.push([searches[i]['name'], 'S' + searches[i]['id']]);
for (var i in searches) {
if (searches[i].id != this.parent.search.id) {
rows.push([searches[i].name, 'S' + Zotero.Searches.getLibraryKeyHash(searches[i])]);
}
}
this.createValueMenu(merged);
this.createValueMenu(rows);
break;
case 'itemTypeID':
@ -446,7 +446,9 @@
var operatorsList = this.id('operatorsmenu');
// Drop-down menu
if (conditionsMenu.value == 'collectionID' || conditionsMenu.value == 'itemTypeID'
if (conditionsMenu.value == 'collection'
|| conditionsMenu.value == 'savedSearch'
|| conditionsMenu.value == 'itemTypeID'
|| conditionsMenu.value == 'fileTypeID') {
this.id('valuefield').hidden = true;
this.id('valuemenu').hidden = false;
@ -515,21 +517,18 @@
var prefix = '';
// Handle special conditions
switch (condition['condition'])
{
case 'savedSearchID':
this.id('conditionsmenu').value = 'collectionID';
switch (condition.condition) {
case 'savedSearch':
prefix = 'S';
break;
case 'collectionID':
case 'collection':
prefix = 'C';
// fall through
default:
this.id('conditionsmenu').value = condition['condition'];
break;
}
this.id('conditionsmenu').value = condition.condition;
// Convert datetimes from UTC to localtime
if ((condition['condition']=='accessDate' ||
condition['condition']=='dateAdded' ||
@ -591,16 +590,16 @@
// Handle special C1234 and S5678 form for
// collections and searches
else if (this.id('conditionsmenu').value=='collectionID')
else if (this.id('conditionsmenu').value == 'collection' || this.id('conditionsmenu').value == 'savedSearch')
{
var letter = this.id('valuemenu').value.substr(0,1);
if (letter=='C')
{
condition = 'collectionID';
condition = 'collection';
}
else if (letter=='S')
{
condition = 'savedSearchID';
condition = 'savedSearch';
}
var value = this.id('valuemenu').value.substr(1);
}

View file

@ -21,6 +21,13 @@ function doUnload()
function doAccept()
{
document.getElementById('search-box').search.setName(document.getElementById('search-name').value);
document.getElementById('search-box').search.name = document.getElementById('search-name').value;
try {
io.dataOut = document.getElementById('search-box').save();
}
catch (e) {
Zotero.debug(e, 1);
Components.utils.reportError(e);
throw (e);
}
}

View file

@ -2492,6 +2492,21 @@ Zotero.Schema = new function(){
Zotero.DB.query("DELETE FROM tags WHERE TRIM(name)=''");
}
if (i==67) {
var rows = Zotero.DB.query("SELECT * FROM savedSearchConditions WHERE condition='collectionID'");
for each(var row in rows) {
var c = Zotero.Collections.get(row.value);
var newVal = c ? '0_' + c.key : null;
Zotero.DB.query("UPDATE savedSearchConditions SET condition='collection', value=? WHERE savedSearchID=? AND searchConditionID=?", [newVal, row.savedSearchID, row.searchConditionID]);
}
var rows = Zotero.DB.query("SELECT * FROM savedSearchConditions WHERE condition='savedSearchID'");
for each(var row in rows) {
var c = Zotero.Searches.get(row.value);
var newVal = c ? '0_' + c.key : null;
Zotero.DB.query("UPDATE savedSearchConditions SET condition='savedSearch', value=? WHERE savedSearchID=? AND searchConditionID=?", [newVal, row.savedSearchID, row.searchConditionID]);
}
}
Zotero.wait();
}

View file

@ -210,9 +210,9 @@ Zotero.Search.prototype.load = function() {
var [condition, mode] =
Zotero.SearchConditions.parseCondition(conditions[i]['condition']);
if (!Zotero.SearchConditions.get(condition)){
Zotero.debug("Invalid saved search condition '"
+ condition + "' -- skipping", 2);
var cond = Zotero.SearchConditions.get(condition);
if (!cond || cond.noLoad) {
Zotero.debug("Invalid saved search condition '" + condition + "' -- skipping", 2);
continue;
}
@ -407,6 +407,30 @@ Zotero.Search.prototype.addCondition = function(condition, operator, value, requ
}
return false;
}
// Shortcut to add a collection
else if (condition == 'collectionID') {
var c = Zotero.Collections.get(value);
if (!c) {
var msg = "Collection " + value + " not found";
Zotero.debug(msg, 2);
Components.utils.reportError(msg);
return;
}
var lkh = Zotero.Collections.getLibraryKeyHash(c);
return this.addCondition('collection', operator, lkh, required);
}
// Shortcut to add a saved search
else if (condition == 'savedSearchID') {
var s = Zotero.Searches.get(value);
if (!s) {
var msg = "Saved search " + value + " not found";
Zotero.debug(msg, 2);
Components.utils.reportError(msg);
return;
}
var lkh = Zotero.Searches.getLibraryKeyHash(s);
return this.addCondition('savedSearch', operator, lkh, required);
}
var searchConditionID = ++this._maxSearchConditionID;
@ -499,17 +523,16 @@ Zotero.Search.prototype.getSearchConditions = function(){
this.load();
}
var conditions = [];
var i = 1;
for each(var condition in this._conditions) {
conditions[i] = {
id: i,
for (var id in this._conditions) {
var condition = this._conditions[id];
conditions[id] = {
id: id,
condition: condition.condition,
mode: condition.mode,
operator: condition.operator,
value: condition.value,
required: condition.required
};
i++;
}
return conditions;
}
@ -938,7 +961,8 @@ Zotero.Search.prototype._buildQuery = function(){
for (var i in this._conditions){
var data = Zotero.SearchConditions.get(this._conditions[i]['condition']);
if (data['table']){
// Has a table or explicitly unspecial
if (data.table || (!data.special && typeof data.special != 'undefined')) {
conditions.push({
name: data['name'],
alias: data['name']!=this._conditions[i]['condition']
@ -1041,8 +1065,6 @@ Zotero.Search.prototype._buildQuery = function(){
//
if (condition['table']){
switch (condition['table']){
case 'savedSearches':
break;
default:
condSelectSQL += 'itemID '
switch (condition['operator']){
@ -1093,19 +1115,26 @@ Zotero.Search.prototype._buildQuery = function(){
openParens++;
break;
case 'collectionID':
var q = ['?'];
var p = [{int:condition['value']}];
// Search descendent collections if recursive search
if (recursive){
var col = Zotero.Collections.get(condition['value']);
case 'collection':
var col;
if (condition.value) {
var lkh = Zotero.Collections.parseLibraryKeyHash(condition.value);
if (lkh) {
col = Zotero.Collections.getByLibraryAndKey(lkh.libraryID, lkh.key);
}
}
if (!col) {
var msg = "Collection " + condition['value'] + " specified in saved search doesn't exist";
var msg = "Collection " + condition.value + " specified in saved search doesn't exist";
Zotero.debug(msg, 2);
Zotero.log(msg, 'warning', 'chrome://zotero/content/xpcom/search.js');
continue;
}
var q = ['?'];
var p = [col.id];
// Search descendent collections if recursive search
if (recursive){
var descendents = col.getDescendents(false, 'collection');
if (descendents){
for (var k in descendents){
@ -1121,14 +1150,26 @@ Zotero.Search.prototype._buildQuery = function(){
skipOperators = true;
break;
case 'savedSearchID':
case 'savedSearch':
condSQL += "itemID ";
if (condition['operator']=='isNot'){
condSQL += "NOT ";
}
condSQL += "IN (";
var search = new Zotero.Search();
search.id = condition.value;
var search;
if (condition.value) {
var lkh = Zotero.Searches.parseLibraryKeyHash(condition.value);
if (lkh) {
search = Zotero.Searches.getByLibraryAndKey(lkh.libraryID, lkh.key);
}
}
if (!search) {
var msg = "Search " + condition.value + " specified in saved search doesn't exist";
Zotero.debug(msg, 2);
Zotero.log(msg, 'warning', 'chrome://zotero/content/xpcom/search.js');
continue;
}
// Check if there are any post-search filters
var hasFilter = search.hasPostSearchFilter();
@ -1655,8 +1696,9 @@ Zotero.SearchConditions = new function(){
* Define and set up the available advanced search conditions
*
* Flags:
* - special
* - template
* - special (don't show in search window menu)
* - template (special handling)
* - noLoad (can't load from saved search)
*/
function _init(){
var conditions = [
@ -1724,18 +1766,6 @@ Zotero.SearchConditions = new function(){
}
},
// Saved search to search within
{
name: 'savedSearchID',
operators: {
is: true,
isNot: true
},
table: 'savedSearches',
field: 'savedSearchID',
special: true
},
{
name: 'quicksearch',
operators: {
@ -1743,25 +1773,48 @@ Zotero.SearchConditions = new function(){
isNot: true,
contains: true,
doesNotContain: true
}
},
noLoad: true
},
// Quicksearch block markers
{
name: 'blockStart'
name: 'blockStart',
noLoad: true
},
{
name: 'blockEnd'
name: 'blockEnd',
noLoad: true
},
// Shortcuts for adding collections and searches by id
{
name: 'collectionID',
operators: {
is: true,
isNot: true
},
noLoad: true
},
{
name: 'savedSearchID',
operators: {
is: true,
isNot: true
},
noLoad: true
},
//
// Standard conditions
//
// Collection id to search within
{
name: 'collectionID',
name: 'collection',
operators: {
is: true,
isNot: true
@ -1770,6 +1823,16 @@ Zotero.SearchConditions = new function(){
field: 'collectionID'
},
// Saved search to search within
{
name: 'savedSearch',
operators: {
is: true,
isNot: true
},
special: false
},
{
name: 'dateAdded',
operators: {

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=بعد
searchOperator.isInTheLast=في الآخر
searchConditions.tooltip.fields=الحقول:
searchConditions.collectionID=مجموعة
searchConditions.collection=مجموعة
searchConditions.itemTypeID=نوع الموضوع
searchConditions.tag=وسم
searchConditions.note=ملاحظة

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=е след
searchOperator.isInTheLast=е в последните
searchConditions.tooltip.fields=Полета:
searchConditions.collectionID=Колекция
searchConditions.collection=Колекция
searchConditions.itemTypeID=Тип на обекта
searchConditions.tag=Отметка
searchConditions.note=Бележка

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=és després
searchOperator.isInTheLast=és en l'últim
searchConditions.tooltip.fields=Camps:
searchConditions.collectionID=Col·lecció
searchConditions.collection=Col·lecció
searchConditions.itemTypeID=Tipus d'element
searchConditions.tag=Etiqueta
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=je za
searchOperator.isInTheLast=je naposledy
searchConditions.tooltip.fields=Pole:
searchConditions.collectionID=Kolekce
searchConditions.collection=Kolekce
searchConditions.itemTypeID=Typ položky
searchConditions.tag=Štítek
searchConditions.note=Poznámka

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=Er efter
searchOperator.isInTheLast=Er tilsidst
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Samling
searchConditions.collection=Samling
searchConditions.itemTypeID=Element Type
searchConditions.tag=Tag
searchConditions.note=Notat

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=ist nach
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Sammlung
searchConditions.collection=Sammlung
searchConditions.itemTypeID=Art des Eintrags
searchConditions.tag=Tag
searchConditions.note=Notiz

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=ist nach
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Sammlung
searchConditions.collection=Sammlung
searchConditions.itemTypeID=Art des Eintrags
searchConditions.tag=Tag
searchConditions.note=Notiz

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=ist nach
searchOperator.isInTheLast=ist in den letzten
searchConditions.tooltip.fields=Felder:
searchConditions.collectionID=Sammlung
searchConditions.collection=Sammlung
searchConditions.itemTypeID=Art des Eintrags
searchConditions.tag=Tag
searchConditions.note=Notiz

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -107,7 +107,7 @@
<!ENTITY zotero.preferences.charset.importCharset "Import Character Encoding">
<!ENTITY zotero.preferences.charset.displayExportOption "Display character encoding option on export">
<!ENTITY zotero.preferences.dataDir "Storage Location">
<!ENTITY zotero.preferences.dataDir "Data Directory Location">
<!ENTITY zotero.preferences.dataDir.useProfile "Use Firefox profile directory">
<!ENTITY zotero.preferences.dataDir.custom "Custom:">
<!ENTITY zotero.preferences.dataDir.choose "Choose...">

View file

@ -432,7 +432,8 @@ searchOperator.isAfter = is after
searchOperator.isInTheLast = is in the last
searchConditions.tooltip.fields = Fields:
searchConditions.collectionID = Collection
searchConditions.collection = Collection
searchConditions.savedSearch = Saved Search
searchConditions.itemTypeID = Item Type
searchConditions.tag = Tag
searchConditions.note = Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=es posterior al
searchOperator.isInTheLast=en los últimos
searchConditions.tooltip.fields=Campos:
searchConditions.collectionID=Colección
searchConditions.collection=Colección
searchConditions.itemTypeID=Tipo de ítem
searchConditions.tag=Marca
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=est après
searchOperator.isInTheLast=est dans les derniers
searchConditions.tooltip.fields=Champs :
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Type d'élément
searchConditions.tag=Marqueur
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=é despois
searchOperator.isInTheLast=é no último
searchConditions.tooltip.fields=Campos:
searchConditions.collectionID=Colección:
searchConditions.collection=Colección:
searchConditions.itemTypeID=Tipo de Artigo
searchConditions.tag=Etiqueta
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=:שדות
searchConditions.collectionID=אוסף
searchConditions.collection=אוסף
searchConditions.itemTypeID=סוג פריט
searchConditions.tag=תג
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=utána következis
searchOperator.isInTheLast=az utolsó
searchConditions.tooltip.fields=Mezők:
searchConditions.collectionID=Gyűjtemény
searchConditions.collection=Gyűjtemény
searchConditions.itemTypeID=Elemtípus
searchConditions.tag=Címke
searchConditions.note=Jegyzet

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=er á eftir
searchOperator.isInTheLast=er í síðustu
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Safn
searchConditions.collection=Safn
searchConditions.itemTypeID=Tegund færslu
searchConditions.tag=Tag
searchConditions.note=Athugasemd

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=è dopo
searchOperator.isInTheLast=è alla fine
searchConditions.tooltip.fields=Campi:
searchConditions.collectionID=Collezione
searchConditions.collection=Collezione
searchConditions.itemTypeID=Tipo di elemento
searchConditions.tag=Tag
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=が次より後:
searchOperator.isInTheLast=が次の期間の間にある:
searchConditions.tooltip.fields=フィールド:
searchConditions.collectionID=コレクション
searchConditions.collection=コレクション
searchConditions.itemTypeID=アイテムの種類
searchConditions.tag=タグ
searchConditions.note=メモ

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=다음보다 이후에
searchOperator.isInTheLast=맨 마지막에
searchConditions.tooltip.fields=필드:
searchConditions.collectionID=수집품
searchConditions.collection=수집품
searchConditions.itemTypeID=항목 형식
searchConditions.tag=태그
searchConditions.note=노트

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Тэмдэглэл

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=er etter
searchOperator.isInTheLast=er i den siste
searchConditions.tooltip.fields=Felter:
searchConditions.collectionID=Samling
searchConditions.collection=Samling
searchConditions.itemTypeID=Elementtype
searchConditions.tag=Tagg
searchConditions.note=Notat

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is na
searchOperator.isInTheLast=is in de laatste
searchConditions.tooltip.fields=Velden:
searchConditions.collectionID=Verzameling
searchConditions.collection=Verzameling
searchConditions.itemTypeID=Object type
searchConditions.tag=Label
searchConditions.note=Aantekening

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=jest po
searchOperator.isInTheLast=nie jest ostanie
searchConditions.tooltip.fields=Pola:
searchConditions.collectionID=Kolekcja
searchConditions.collection=Kolekcja
searchConditions.itemTypeID=Typ elementu
searchConditions.tag=Etykieta
searchConditions.note=Notatka

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=é depois
searchOperator.isInTheLast=está em último
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Coleção
searchConditions.collection=Coleção
searchConditions.itemTypeID=Tipo de ítem
searchConditions.tag=Tag
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=está depois de
searchOperator.isInTheLast=está na(o) última(o)
searchConditions.tooltip.fields=Campos:
searchConditions.collectionID=Colecção
searchConditions.collection=Colecção
searchConditions.itemTypeID=Tipo de Item
searchConditions.tag=Etiqueta
searchConditions.note=Nota

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=este după
searchOperator.isInTheLast=este în ultima
searchConditions.tooltip.fields=Câmpuri:
searchConditions.collectionID=Colecţie
searchConditions.collection=Colecţie
searchConditions.itemTypeID=Tip înregistrare
searchConditions.tag=Etichetă
searchConditions.note=Notă

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=после
searchOperator.isInTheLast=в прошлом
searchConditions.tooltip.fields=Поля:
searchConditions.collectionID=Подборка
searchConditions.collection=Подборка
searchConditions.itemTypeID=Тип документа
searchConditions.tag=Тег
searchConditions.note=Заметка

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=je po
searchOperator.isInTheLast=je v posledných
searchConditions.tooltip.fields=Polia:
searchConditions.collectionID=Kolekcia
searchConditions.collection=Kolekcia
searchConditions.itemTypeID=Typ položky
searchConditions.tag=Tag
searchConditions.note=Poznámka

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=je za
searchOperator.isInTheLast=je v zadnjih
searchConditions.tooltip.fields=Polja:
searchConditions.collectionID=Zbirka
searchConditions.collection=Zbirka
searchConditions.itemTypeID=Vrsta vnosa
searchConditions.tag=Značka
searchConditions.note=Opomba

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=је после
searchOperator.isInTheLast=је у задњих
searchConditions.tooltip.fields=Поља:
searchConditions.collectionID=Колекција
searchConditions.collection=Колекција
searchConditions.itemTypeID=Врста ставке
searchConditions.tag=Ознака
searchConditions.note=Белешка

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=är efter
searchOperator.isInTheLast=är i den sista
searchConditions.tooltip.fields=Fält:
searchConditions.collectionID=Samling
searchConditions.collection=Samling
searchConditions.itemTypeID=Posttyp
searchConditions.tag=Etikett
searchConditions.note=Anteckning

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=is after
searchOperator.isInTheLast=is in the last
searchConditions.tooltip.fields=Fields:
searchConditions.collectionID=Collection
searchConditions.collection=Collection
searchConditions.itemTypeID=Item Type
searchConditions.tag=Tag
searchConditions.note=Note

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=sonra
searchOperator.isInTheLast=son
searchConditions.tooltip.fields=Alanlar:
searchConditions.collectionID=Derme
searchConditions.collection=Derme
searchConditions.itemTypeID=Eser Türü
searchConditions.tag=Etiket
searchConditions.note=Not

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=sau
searchOperator.isInTheLast=trong vòng
searchConditions.tooltip.fields=Trường:
searchConditions.collectionID=Bộ sưu tập
searchConditions.collection=Bộ sưu tập
searchConditions.itemTypeID=Kiểu Biểu ghi
searchConditions.tag=Thẻ
searchConditions.note=Ghi chép

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=晚于
searchOperator.isInTheLast=在最近
searchConditions.tooltip.fields=字段
searchConditions.collectionID=分类
searchConditions.collection=分类
searchConditions.itemTypeID=条目类型
searchConditions.tag=标签
searchConditions.note=笔记

View file

@ -432,7 +432,7 @@ searchOperator.isAfter=晚於
searchOperator.isInTheLast=在最近
searchConditions.tooltip.fields=欄位:
searchConditions.collectionID=收集
searchConditions.collection=收集
searchConditions.itemTypeID=項目類型
searchConditions.tag=標籤
searchConditions.note=筆記

View file

@ -1,4 +1,4 @@
-- 66
-- 67
-- 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()