Commit graph

588 commits

Author SHA1 Message Date
Dan Stillman
36af25b3e9 Cache file link mode 2006-08-09 16:25:28 +00:00
David Norton
6877d33e61 Closes #172, add preference for EndNote MIME type stealing feature
Addresses #169, add OpenURL interface hooks
Addresses #170, Put "Link" option before "Import" in drop-down menu

Fixes some advanced search flaws (there are still bugs)
2006-08-09 15:44:11 +00:00
David Norton
8d5f1e62b6 Closes #47, advanced search
Closes #152, Saved Searches (interface layer)

For now, advanced search IS a saved search.

There are still bugs. The 'search' icon is ugly. I wanted to get it out there, however.
2006-08-09 11:43:33 +00:00
Dan Stillman
d7990b0e03 Updated Scholar.Files.linkFromURL() to take title and mime type as parameters, to prevent loading huge external PDFs just to get the content type when the ingester already knows it (though that will hopefully be alleviated by #173 and #174 later) 2006-08-09 06:32:16 +00:00
Dan Stillman
318cf3194f Addresses #171, Add more conditions to advanced search architecture
Added conditions 'tagID', 'tag' (text), 'creator' (concats first and last before comparing), and 'note'
2006-08-08 23:08:52 +00:00
Simon Kornblith
6efd6d2cc4 closes #99, add options for export 2006-08-08 23:00:33 +00:00
Simon Kornblith
af080fe384 allow EndNote MIME handler to be unregistered without restarting Firefox 2006-08-08 21:40:33 +00:00
Simon Kornblith
3edb6e0286 closes #86, steal EndNote download links
Scholar should now attempt to process citation information from EndNote download links (MIME types application/x-endnote-refer and application/x-research-info-systems). in situations where Scholar cannot process the information, a standard helper app dialog will appear. this behavior is controlled by the preference extensions.scholar.parseEndNoteMIMETypes.
2006-08-08 21:17:07 +00:00
Dan Stillman
9f57379415 Make searchConditionIDs a little easier to work with--now accessible by with the .id property of search conditions in addition to index 2006-08-08 15:40:42 +00:00
Dan Stillman
f8739ee6c5 Closes #135, Associate MIME types with abstract file types and implement Scholar.FileTypes.getIDFromMIMEType()
MIME type prefixes are handled using wildcards (e.g. audio/foobar will return the audio file type since it matches 'audio/%')
2006-08-08 08:23:23 +00:00
Dan Stillman
1de9007608 Take two 2006-08-08 07:05:39 +00:00
Dan Stillman
b5cb0e3a92 Fixed repeat single-file loading with Files.importFromURL() and Files.linkFromURL() (have to use the "pageload" event rather than "load" -- thanks Simon) 2006-08-08 07:05:05 +00:00
Dan Stillman
425d806307 Closes #158, Add linkFromURL() and importFromURL() functions to Scholar.Files 2006-08-08 06:08:21 +00:00
Dan Stillman
d7ed7c256c Fix the startup trouble the search code was causing (moved DB call into init() function rather than constructor) -- sorry about that 2006-08-08 05:26:51 +00:00
Simon Kornblith
504ebf8996 closes #162, do sniffing for import formats
import should now work regardless of file extensions. this should make #86 (steal EndNote download links) fairly easy to implement.
2006-08-08 02:46:52 +00:00
Dan Stillman
d67d96c321 Closes #7, Add advanced search functionality to data layer
Implemented advanced/saved search architecture -- to use, you create a new search with var search = new Scholar.Search(), add conditions to it with addCondition(condition, operator, value), and run it with search(). The standard conditions with their respective operators can be retrieved with Scholar.SearchConditions.getStandardConditions(). Others are for special search flags and can be specified as follows (condition, operator, value):

'context', null, collectionIDToSearchWithin
'recursive', 'true'|'false' (as strings!--defaults to false if not specified, though, so should probably just be removed if not wanted), null
'joinMode', 'any'|'all', null

For standard conditions, currently only 'title' and the itemData fields are supported -- more coming soon.

Localized strings created for the standard search operators


API:

search.setName(name) -- must be called before save() on new searches
search.load(savedSearchID)
search.save() -- saves search to DB and returns a savedSearchID
search.addCondition(condition, operator, value)
search.updateCondition(searchConditionID, condition, operator, value)
search.removeCondition(searchConditionID)
search.getSearchCondition(searchConditionID) -- returns a specific search condition used in the search
search.getSearchConditions() -- returns search conditions used in the search
search.search() -- runs search and returns an array of item ids for results
search.getSQL() -- will be used by Dan for search-within-search

Scholar.Searches.getAll() -- returns an array of saved searches with 'id' and 'name', in alphabetical order
Scholar.Searches.erase(savedSearchID) -- deletes a given saved search from the DB

Scholar.SearchConditions.get(condition) -- get condition data (operators, etc.)
Scholar.SearchConditions.getStandardConditions() -- retrieve conditions for use in drop-down menu (as opposed to special search flags)
Scholar.SearchConditions.hasOperator() -- used by Dan for error-checking
2006-08-08 02:04:02 +00:00
Simon Kornblith
216f0c7581 closes #83, figure out how to implement OpenURL
closes #76, implement extensible search/retrieval architecture for obtaining metadata

OpenURL COinS lookup is now implemented using a real search architecture system. at the moment, it works with Open WorldCat for books, CrossRef for journal articles (provided the COinS object contains a DOI or an ISSN), and PubMed when a PMID is available.
2006-08-08 01:06:33 +00:00
David Norton
9e5c15423a Fixes #164, On item delete, if "Erase Files" is not checked, it still shows files and notes being deleted.
If you are simple removing an item from a project, it won't ask you if you want to delete files and notes.

ItemTreeView:
 - notify() now works with multiple ids for action=modify.
 - saveSelection() returns an array of selected IDs instead of saving it to a class variable
 - rememberSelection(selection) takes an array of IDs.
2006-08-07 15:25:29 +00:00
Simon Kornblith
6626eba844 addresses #83, figure out how to implement OpenURL
OpenURL lookup now works for books. this means that all that's necessary to add scrapable book metadata to a page is an ISBN, as shown below:

<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info:ofi/fmt:kev:mtx:book&amp;rft.isbn=1579550088"></span>

also, we can now scrape Open WorldCat and Wikipedia Book Sources pages with no specialized code involved.

i'm still looking for a better way of looking up journal article metadata. it's currently implemented with CrossRef, but CrossRef simply will not work without a DOI, and is also incomplete (only holds the last name of the first author).
2006-08-07 05:15:30 +00:00
Simon Kornblith
56769079b0 addresses #83, figure out how to implement OpenURL
Scholar.OpenURL.resolve(item) returns the URL that retrieves an item from the user's OpenURL resolver. this means we can implement a "find in my library" feature.
Scholar.OpenURL.discoverResolvers() returns a list of available resolvers for the user's current location (by IP address).
2006-08-06 21:59:50 +00:00
Dan Stillman
d4acec8a77 Addresses #111, minor modifications to field list schema, and http://chnm.grouphub.com/P2995041
Still some outstanding questions on Basecamp, though
2006-08-06 16:10:28 +00:00
Simon Kornblith
fc589a37cf closes #131, make import/export symmetrical
all 4 import/export formats currently supported (MODS, Hybrid RDF, Unqualified Dublin Core, and RIS) now work as both import and export translators
2006-08-06 09:34:51 +00:00
Simon Kornblith
9144b56772 addresses #131, make import/export symmetrical
closes #163, make translator API allow creator types besides author

import and export in the multi-ontology RDF format should now work properly. collections, notes, and see also are all preserved. more extensive testing will be necessary later.
2006-08-05 20:58:45 +00:00
Dan Stillman
1ce4de835b Fixes #167, Item note cache is not set on new note creation 2006-08-05 07:42:32 +00:00
Dan Stillman
8dd972dea1 Make Collection.getDescendents() a[n officially] public method and add second param to limit results to 'collection' or 'item' 2006-08-05 06:39:15 +00:00
Dan Stillman
701762a11f Fixes #166, Scholar.ItemTypes.getID("journalArticle") throws "Invalid item type journalarticle"
Fixed ignoreCase logic (and also set all but CharacterSets to false, since there's no reason for them to be true)

Also made CachedTypes.getID() and getName() return false and '', respectively, on unknown types rather than letting them hit the error (there's still the 'invalid * type' debug message)
2006-08-04 19:39:53 +00:00
David Norton
0b552c5fdb Closes #153, When deleting an item, don't give option to erase attached notes and files when there are none
Also, the default option (when applicable) is to delete attached notes and files.
2006-08-04 14:36:04 +00:00
David Norton
85815dad49 Closes #159, "Snapshot to Current Page" and "Link to Current Page" should save page as item
-   We might want to do this for regular files as well? I think we need a discussion on how Citation will be presented to the user, and if that will save the web page, and all that jazz.
2006-08-04 14:23:44 +00:00
Dan Stillman
9d58fac7e0 Abstracted the Scholar.*Types logic to a base function that can be extended and added singletons for the various types -- rock the JS prototype model 2006-08-04 04:34:16 +00:00
Simon Kornblith
b4c8dbe700 closes #157, add database infrastructure for different CSL styles
CSL is stored in a new "csl" table. only metadata relevant to updates and selection (ID, date updated, and title) is stored in columns.
2006-08-03 04:54:16 +00:00
Simon Kornblith
30af2c89df - closes #130, add progress bar for import/export
- eliminates "unresponsive script" message on import/export

i tried to make a progress bar that actually provides useful information, but for some reason, XUL interface updates are done asynchronously, and thus don't actually happen as long as the import/export operation continues. the code is there, but disabled, if there's some solution to this issue, but i searched and couldn't find one.
2006-08-02 21:06:58 +00:00
David Norton
6ad7acf4d8 Addressed #155, Localize strings 2006-08-02 17:57:16 +00:00
David Norton
e30a1b717a Addresses #63, Add GPL license info to source code.
License file added.
	Header added to David's interface files -- add header to your own files.
2006-08-02 16:49:19 +00:00
David Norton
04ce48ae64 Closes #156, Double-clicking a note in the item list should open it in a popup window 2006-08-02 16:08:19 +00:00
David Norton
b79420e75b Closes #154, Clicking an item in Related should display that item.
Cancel Search ('x') button now uses a custom image.
Fixes problem with items list freezing on item add
2006-08-02 15:13:31 +00:00
Simon Kornblith
f6c12d3d81 closes #112, ingested items should be automatically added to selected project 2006-08-02 14:17:16 +00:00
Dan Stillman
5c6d9de4b8 Addresses #77, maintain database backups
Temporarily added in a check of the backup file on startup, since I'm not entirely convinced that the backup mechanism on shutdown couldn't create a corrupt file under certain conditions

If you run with debug output on and notice the "Backup file was corrupt" message, let me know.
2006-08-01 23:32:18 +00:00
Dan Stillman
d3bc693dab Closes #77, maintain database backups
The Scholar database is backed up on browser close. On startup, if the main database is damaged, the extension saves a copy of the damaged file and tries to restore from the last automatic backup. If it fails, it creates a new database file.

New methods:

Scholar.getScholarDatabase(string [ext])
Scholar.backupDatabase()
Scholar.moveToUnique(file, newFile) -- find a unique filename using the leafName of newFile as the suggested name (using the built-in Mozilla functionality) and move the file there
Scholar.Date.getFileDateString(file)
Scholar.Date.getFileTimeString(file)
2006-08-01 23:10:31 +00:00
Dan Stillman
9a0457b43e Register shutdown handler to call Scholar.shutdown() on exit 2006-08-01 18:01:56 +00:00
David Norton
635d2e48b9 Closes #151, Show "X" in search box to cancel search.
- I had to make the textbox taller, but it seems to be working right.
Fixed problem with note editor in right pane not updating correctly.
2006-08-01 18:01:48 +00:00
David Norton
3414004cb0 Closes #45, reorder item fields 2006-07-31 22:35:14 +00:00
David Norton
cd4dd3bd92 Closes #148, Files should display a different icon for each type (file & snapshot, linked & unlinked)
Clicking a file or note in the rightmost pane displays it in the middle pane.
2006-07-31 20:35:22 +00:00
David Norton
0632cbf5e4 Closes #91, Add dialog to delete child notes when a source is deleted
Closes #146, ScholarPane.selectItem(id)
Closes #147, "Edit in a Separate Window" on a note should select the note's parent item.
Addresses #143, Scholar toolbar button to save current page as an independent file in the selected project.
 - Standalone Files are now added to the current Project.
Files added to an item are now actually attached to the item.
2006-07-31 19:14:06 +00:00
David Norton
426b839e5f Changed Add button to a single button, with a dropdown menu. 2006-07-31 17:05:41 +00:00
David Norton
4757d21b20 Fixes #143, Scholar toolbar button to save current page as an independent file in the selected project. 2006-07-31 16:58:14 +00:00
Dan Stillman
40ef9f669d Closes #90, Add flag to delete child notes when a source is deleted
Item.erase(true) deletes child items as well instead of just unlinking
2006-07-31 06:05:19 +00:00
Dan Stillman
526d368aaf Closes #117, permit dashes and commas in "pages" field
Closes #118, add "translator" creator type
Closes #122, add DOI and abbreviated journal title fields
Addresses #45, reorder item fields -- source/rights moved down to bottom; date fields not yet moved
2006-07-31 04:31:44 +00:00
Dan Stillman
9da1c210a0 Change repository check time back to once a day 2006-07-31 03:38:02 +00:00
Dan Stillman
1adeb840bf Closes #98, Cache note content to avoid repeated DB calls 2006-07-30 21:49:34 +00:00
Dan Stillman
6ab7fd1e18 Closes #119, When Item.isNote(), Item.getField('title') should return first line of note
Returns the first 80 characters of the note content as the title

Also changed setField() to use the loadIn parameter for primary fields so it can be used instead of this._data without affected _changedItems
2006-07-30 21:01:23 +00:00
David Norton
331a608a1e Closes #139, Ability to link to files, webpages
Buttons under Files tab are icons, so that they can fit horizontally.
2006-07-28 19:56:49 +00:00
David Norton
29fcb08083 The fullscreen button is now an image. It looks different depending on whether the pane is on top or bottom, and changes background when activated. 2006-07-28 16:49:19 +00:00
Dan Stillman
82106afc95 JavaScript, how I love thee.
Fixes URL not being stored with saved web pages.
2006-07-28 16:20:48 +00:00
David Norton
1ff56d8650 Add File (from current page) uses the correct document now. (thanks Dan) 2006-07-28 16:11:44 +00:00
David Norton
81a980e4db Fixes Select All on Windows. But more importantly, uses the correct command structure for Select All, Delete, and provides the structure for future commands. 2006-07-28 13:28:50 +00:00
Simon Kornblith
a663966c4f closes #2, clipboard export
for the moment, this feature is disabled on the mac, since firefox can't handle HTML on the clipboard (and thus we can't copy the fully formatted bibliography). i can re-enable it if it would be useful regardless.
2006-07-28 04:09:40 +00:00
Simon Kornblith
6305e4cada closes #55, export bibliography to printable version
closes #4, Make printable version

- moves functions for creating and deleting hidden browser objects to scholar.js (from ingester.js), since these are necessary for printing as well
- allows saving bibliography in HTML or printing bibliography. style support is not yet complete (pending finalization of 0.9 version of CSL specification).
2006-07-27 23:01:55 +00:00
David Norton
1d03bf6b71 Fixes #16, select all does not work in items list 2006-07-27 21:18:42 +00:00
David Norton
49d1eec9e8 Closes #127, Display files under files tab
Closes #128, Display files as children of item in items list

Fixes #132, On Full-screen mode, browser content disappears but Scholar content does not stretch.
Fixes #133, When Scholar on top, pane automatically resizes depending on item info height.
2006-07-27 18:08:09 +00:00
Dan Stillman
441696767a Don't return non-independent file items in Scholar.getItems() (thanks David) 2006-07-27 15:55:03 +00:00
Dan Stillman
c093e7b62b Item.isRegularItem() = !(Item.isNote() || Item.isFile()) 2006-07-27 15:04:22 +00:00
Dan Stillman
c50dedc90a Addresses #17, add filesystem/ability to store files
Not finished, but enough to give David something to work with

No BLOBs -- just linking/importing of files and loaded documents


New Scholar.Item methods:

incrementFileCount() (used internally)
decrementFileCount() (used internally)
isFile()
numFiles()
getFile() -- returns nsILocalFile or false if associated file doesn't exist (note: always returns false for items with LINK_MODE_LINKED_URL, since they have no files -- use getFileURL() instead)
getFileURL() -- returns URL string
getFileLinkMode() -- compare to Scholar.Files.LINK_MODE_* constants: LINKED_FILE, IMPORTED_FILE, LINKED_URL, IMPORTED_URL
getFileMimeType() -- mime type of file (e.g. text/plain)
getFileCharset() -- charsetID of file
getFiles() -- array of file itemIDs this file is a source for

New Scholar.Files methods:

importFromFile(nsIFile file [, int sourceItemID])
linkFromFile(nsIFile file [, int sourceItemID])
importFromDocument(nsIDOMDocument document [, int sourceItemID])
linkFromDocument(nsIDOMDocument document [, int sourceItemID])

New class Scholar.FileTypes -- partially implemented, not yet used

New class  Scholar.CharacterSets -- same as other *Types classes:
getID(idOrName)
getName(idOrName)
getTypes() (aliased to getAll(), which I'll probably change the others to as well)

Charsets table with all official character sets (copied from Mozilla source)

Renamed Item.setNoteSource() to setSource() and Item.getNoteSource() to getSource() and adjusted to handle both notes and files
2006-07-27 09:16:02 +00:00
Dan Stillman
4959535aff Scholar DB now stored in scholar subfolder of profile directory
New methods for retrieving profile directory, scholar subdirectory and scholar/storage subsubdirectory
2006-07-27 08:45:48 +00:00
David Norton
46f77ec8ab Set icon for extension (visible on Add-Ons window. You'll have to reinstall Scholar to see).
NOTE: The icon is temporary, just a placeholder. We are waiting on somebody that has real design skills to create a real icon.
2006-07-26 17:48:27 +00:00
David Norton
a47bf41eb6 Created Scholar toolbar button (use Customize Toolbar... option) 2006-07-26 16:42:26 +00:00
David Norton
dc2751b85c Fixes #129, add menu/contextual menu items for export/bibliography
(currently just in contextual menu).
2006-07-26 15:28:31 +00:00
David Norton
aff9cd5708 ScholarPane.getSelectedItem() is now ScholarPane.getSelectedItems(), and returns an array of selected items. 2006-07-26 15:09:06 +00:00
David Norton
b9f577da91 Closes #125, Separate customControls.xml into multiple files 2006-07-26 14:46:27 +00:00
David Norton
dd4bc6f5e8 Fixes #113, "New Note" should put note in currently selected project 2006-07-26 14:30:38 +00:00
David Norton
a08bbe5347 Fixes #120, Scholar preference for Above Content breaks display.
Changes the edit pane to look a lot better (uses groupbox).
Individual tabs don't load their content unless selected.
2006-07-26 14:03:54 +00:00
David Norton
16a995df86 Closes #121, functions to get selected project and items in Scholar pane.
- ScholarPane.getSelectedCollection() returns collection object, or null if Library is selected.
 - ScholarPane.getSelectedItem() returns selected item/note/item-like-thing, or null if no item is selected.
2006-07-24 22:12:25 +00:00
Simon Kornblith
cbe3611182 references #110, implement CSL for citation styling
add Scholar.Cite and Scholar.CSL for parsing items into a bibliography using CSL. unfortunately, the output is not very good at the moment, and the format likely needs some changes, but I'm working with a few other people on getting it to that point.
2006-07-22 01:25:46 +00:00
David Norton
0cf2101019 SelectItemsDialog (for See Also) unregisters tree views on close.
Fixes minor display problems with Tags, See Also.
2006-07-20 23:57:53 +00:00
David Norton
7103fd4f1d Fixes #23, "see also" part of note.
Also, metadata looks better. See Also and Tags and Items.
2006-07-20 23:19:31 +00:00
David Norton
8427ebdf2a Fixes #114, Preference for Scholar location (top, bottom).
(I had to go a little roundabout way of doing it, as you can't use the overlay-related positioning attributes on-the-fly)
2006-07-19 16:14:27 +00:00
David Norton
785954f4f5 Fixes #116, Make full screen button text.
Fixes #115, Windows should open with Scholar Pane closed.
Fixes #105, search box loses focus after search starts.

Retooled the interface a bit, and removed the top toolbar. The close and fullscreen buttons are located to the right of the items toolbar. The item pane cannot be collapsed.
2006-07-17 14:09:12 +00:00
Simon Kornblith
c64e5c841f closes #78, figure out import/export architecture
closes #100, migrate ingester to Scholar.Translate
closes #88, migrate scrapers away from RDF
closes #9, pull out LC subject heading tags
references #87, add fromArray() and toArray() methods to item objects

API changes:
all translation (import/export/web) now goes through Scholar.Translate
all Scholar-specific functions in scrapers start with "Scholar." rather than the jumbled up piggy bank un-namespaced confusion
scrapers now longer specify items through RDF (the beginning of an item.fromArray()-like function exists in Scholar.Translate.prototype._itemDone())
scrapers can be any combination of import, export, and web (type is the sum of 1/2/4 respectively)
scrapers now contain functions (doImport, doExport, doWeb) rather than loose code
scrapers can call functions in other scrapers or just call the function to translate itself
export accesses items item-by-item, rather than accepting a huge array of items
MARC functions are now in the MARC import translator, and accessed by the web translators

new features:
import now works
rudimentary RDF (unqualified dublin core only), RIS, and MARC import translators are implemented (although they are a little picky with respect to file extensions at the moment)
items appear as they are scraped
MARC import translator pulls out tags, although this seems to slow things down
no icon appears next to a the URL when Scholar hasn't detected metadata, since this seemed somewhat confusing

apologizes for the size of this diff. i figured if i was going to re-write the API, i might as well do it all at once and get everything working right.
2006-07-17 04:06:58 +00:00
Simon Kornblith
d65328c830 adds Biblio/DC/FOAF/PRISM/VCard RDF export type. Bruce D'Arcus, author of CiteProc and co-lead on the OpenOffice bibliographic project, is currently using this as his ontology, and we can unambiguously encode all of our metadata with it.
caveats:
- it's not human readable. mozilla doesn't nest blank nodes, so everything's scattered throughout the file. it would be relatively easy to do post-processing with E4X or even regexps to correct this.
- there's no generic callNumber field, so all callNumbers are encoded as LCC.

adds container creation routines to dataMode rdf

changes Dublin Core export to Unqualified Dublin Core, and removes DC Terms qualifiers
2006-07-07 18:41:21 +00:00
Simon Kornblith
c02666fcd3 add an API for Mozilla's RDF data source, so that import/export translators will be able to create and parse RDF with minimal effort
convert Dublin Core export to new API
2006-07-06 21:55:46 +00:00
David Norton
ce26db3495 Closes #12, credits panel.
This custom credits panel gives us more flexibility. Also, there is an About link which is certainly easier to find than right-clicking on the extension in the Add-ons window.
2006-07-06 20:43:32 +00:00
David Norton
c078ebcef7 Fixes tags (broken in r359) 2006-07-06 16:27:34 +00:00
Dan Stillman
40b3ecc996 Addresses #87, Add fromArray() and toArray() methods to Item objects
Item.getTags() (which toArray() uses) now returns actual tags rather than ids -- separate method getTagIDs to return ids
2006-07-06 13:06:32 +00:00
Simon Kornblith
2d8ed16d88 adds export of tags to MODS.
adds export of seeAlso info and project hierarchy to RDF. for now, this is embedded in the modsCollection root element.

uses nodeIDs for Dublin Core RDF.
2006-07-06 03:39:32 +00:00
Simon Kornblith
89a770d56b include fileInterface.js in overlay.xul so that file export will work
make replace work from save dialog
2006-07-05 22:08:25 +00:00
Simon Kornblith
c0251085a9 Add export filters for RIS and Dublin Core RDF 2006-07-05 21:44:01 +00:00
David Norton
52ae9b321e Fixes problems with long tags and cropping. 2006-07-05 17:59:17 +00:00
David Norton
c478fea15f Fixes #52, button to expand to full screen mode.
Fixes #92, sometimes it starts up in full screen mode and you can't switch it back.
Fixes problem with tags summary on Notes not updating.
2006-07-05 16:19:26 +00:00
David Norton
cb4a79ef9d Fixes problem where deleting a note would accidentally hide other items in the list. 2006-07-05 15:35:15 +00:00
David Norton
daf8808615 Fixes #109, add import/export buttons to interface.
- Look under the cog menu above the Projects list.
2006-07-05 15:19:18 +00:00
David Norton
1cdd1f3de2 Fixes #24, tags for notes.
This is now a new control, <tagsbox> which is pretty darn portable.
2006-07-05 15:08:24 +00:00
David Norton
7333a1b538 Fixes #32, implement tags in tags tab 2006-07-05 13:09:58 +00:00
David Norton
07e75aa9de The default location of the bar is at the bottom of the screen. 2006-07-05 11:23:05 +00:00
Simon Kornblith
8b4a44be0f fixes a bug that made the Google Books translator not appear
adjusts the Google Books translator to work with the latest revision of the site

renames the MODS translator to just MODS, because "Metadata Object Description Schema (MODS)" was too long for the export dialog
2006-06-30 19:21:36 +00:00
Dan Stillman
6c88563ded Changed translators.type column to INT and added index
Updated scraper updated mechanism to handle new translator schema, roughly
2006-06-29 07:58:50 +00:00
Dan Stillman
35eb1292a5 Changed getRandomID() to use the full SQLite three-byte range if unable to find a two-byte id in 3 tries 2006-06-29 07:03:24 +00:00
Dan Stillman
b495bb6334 Use getRandomID() for new item ids rather than auto-increment 2006-06-29 06:28:50 +00:00
Dan Stillman
72ca609b52 Addresses #87, Add fromArray() and toArray() methods to Item objects
Changed _getDescendents to take _nested_ flag, be extensible later for smart folders and other types, and include the collection name in the dataset

Added Collection.toArray()

Sample array:

'0' ...
	'id' => "13"
	'type' => "item"
'1' ...
	'id' => "14"
	'type' => "item"
'2' ...
	'id' => "7373"
	'name' => "A Sub-project!"
	'type' => "collection"
	'children' ...
		'0' ...
			'id' => "15"
			'type' => "item"
		'1' ...
			'id' => "9233"
			'name' => "A Sub-sub-project!"
			'type' => "collection"
			'children' ...
2006-06-29 05:18:55 +00:00
Dan Stillman
9b23e1ecdc Addresses #87, Add fromArray() and toArray() methods to Item objects
toArray() improvements:

- seeAlso support (array of itemIDs)

- Added itemID to source notes

- Fixed bug in creator handling
2006-06-29 03:56:22 +00:00
Simon Kornblith
77282c3edc - fixes a bug that could result in scrapers using utilities.processDocuments malfunctioning
- fixes a bug that could result in the Scrape Progress chrome thingy sticking around forever
- makes chrome thingy disappear when URL changes or when tabs are switched
2006-06-29 03:22:10 +00:00
Dan Stillman
2d23ba97e5 See Also functionality for items and notes
Item.addSeeAlso(itemID)
Item.removeSeeAlso(itemID)
Item.getSeeAlso() -- array of linked items

Relationships are mutual

Closes #82, Notes: see also table
2006-06-29 01:37:53 +00:00
Dan Stillman
098b7b1b9e Allow single bound parameters not in arrays in DB.query() calls 2006-06-29 01:06:02 +00:00
Simon Kornblith
45b9234996 addresses #78, figure out import/export architecture
- changes scrapers table to translators table; all import/export/web translators now belong in this table
- adds Scholar.Translate to handle translation issues. eventually, Scholar.Ingester.Document will become part of this interface
- adds Scholar_File_Interface (in fileInterface.js) to handle UI for export and eventually import. (David, when you have time, please connect Scholar_File_Interface.exportFile to a button.)
- adds an export translator for MODS. all of our metadata, but not our hierarchy (projects, etc.) translates directly and unambiguously into valid MODS. eventually, we can use RDF or another format to handle hierarchy.
- adds utilities.getVersion() and utilities.inArray() for simplified scraper coding
- fixes minor interface issues with the nifty chrome scraping status window
2006-06-29 00:56:50 +00:00
Dan Stillman
e45520b871 Updated obsolete references to itemKeywords table to use itemTags (this was breaking item delete and search) 2006-06-28 19:12:35 +00:00
David Norton
3a3b6ab70d Fixes #30, clicking on note in the hierarchical view shows contents of the note in the right panel.
- Generally, restructured the way that editing notes works: there is now a <noteeditor> control.
2006-06-28 18:30:29 +00:00
Dan Stillman
20bad3609d Moving Scholar.Notes in the code -- ignore 2006-06-28 18:30:20 +00:00
Dan Stillman
e22bdaab33 Disallow setting note source to another note (presumably that's what See Also is for) 2006-06-28 18:28:09 +00:00
Dan Stillman
cef196529c Return the tagID, new or otherwise, in Item.addTag() 2006-06-28 18:12:38 +00:00
Dan Stillman
52f7ed62d0 Closes #31, tag data infrastructure
New methods:

Item.addTag(tag)
Item.getTags() -- array of tagIDs
Item.removeTag(tagID)

Tags.getName(tagID)
Tags.getID(tag)
Tags.add(text) -- returns tagID of new tag
Tags.purge() -- purge obsolete tags

The last two are for use by Item.addTag() and Item.removeTag(), respectively, and probably don't need to be used elsewhere.
2006-06-28 18:06:36 +00:00
Dan Stillman
b75376c1c1 Fixes #96, When notify() is called for a new note, getNote() on the item returns false
Item.save() changed to not call notify() if a transaction is in progress, which is totally going to trip someone up at some point, and probably me, but it's better than a new parameter
2006-06-28 15:47:58 +00:00
David Norton
965f4c3c0a Fixes #97, target="_blank" error
All windows opened will check their opener and try to match the collapsed state of the scholar pane to that of the window that opened it.
2006-06-28 15:15:38 +00:00
Dan Stillman
cb8f961639 Removed Scholar.HTTP, now that its functionality has been incorporated back into Scholar.Utilities.HTTP 2006-06-27 23:24:02 +00:00
Dan Stillman
312f32f505 Fixes #96, When notify() is called for a new note, getNote() on the item returns false
getNote() now returns an empty string rather than false on a new item

David, I assume this is what you meant--if not, reopen
2006-06-27 22:55:43 +00:00
David Norton
0991ae230e Fixes #94, New independent notes do not appear in item view until clicking away from folder and back
Also fixes a lot of other issues regarding independant notes.
2006-06-27 22:47:17 +00:00
Dan Stillman
2dece39ad3 Fixes #95, Notes.add() fails when sourceitem is null 2006-06-27 22:14:28 +00:00
Simon Kornblith
9a7d619122 closes #42, save directly to project folder by clicking and holding down the icon in the toolbar. you actually have to right click (not just click and hold) for this to work, because 2.0 gets rid of the click-and-hold = contextual menu thing that existed in older version. 2006-06-27 21:02:26 +00:00
Dan Stillman
91b732c3e1 Addresses #87, Add fromArray() and toArray() methods to Item objects
Item.toArray() implemented -- builds up a multidimensional array of item data, converting all type ids to their textual equivalents -- currently has empty placeholder arrays for tags and seeAlso

Sample source output:

'itemID' => "2"
'itemType' => "book"
'title' => "Computer-Mediated Communication: Human-to-Human Communication Across the Internet"
'dateAdded' => "2006-03-12 05:25:50"
'dateModified' => "2006-03-12 05:25:50"
'publisher' => "Allyn & Bacon Publishers"
'year' => "2002"
'pages' => "347"
'ISBN' => "0-205-32145-3"
'creators' ...
	'0' ...
		'firstName' => "Susan B."
		'lastName' => "Barnes"
		'creatorType' => "author"
'notes' ...
	'0' ...
		'note' => "text"
		'tags' ...
		'seeAlso' ...
	'1' ...
		'note' => "text"
		'tags' ...
		'seeAlso' ...
'tags' ...
'seeAlso' ...


Sample note output:

'itemID' => "17"
'itemType' => "note"
'dateAdded' => "2006-06-27 04:21:16"
'dateModified' => "2006-06-27 04:21:16"
'note' => "text"
'sourceItemID' => "2"
'tags' ...
'seeAlso' ...

sourceItemID won't exist if it's an independent note.

We'll use the same format in reverse for fromArray, so Simon, let me know if you need more data (preserving type ids, etc) or want anything in a different form.
2006-06-27 20:45:41 +00:00
David Norton
711a277173 Fixed hierarchical viewing of notes. (Standalone notes not very well supported yet). Please post bugs to Trac (component: interface) 2006-06-27 20:37:02 +00:00
Dan Stillman
22296470c3 Item.getCreators() to return multidim array of creator data (same as doing a loop to numNotes() and using getCreator()) 2006-06-27 20:26:44 +00:00
Dan Stillman
5ab37dacd5 Notification improvements for notes
Missing query() call for unlinking notes in Item.erase()
2006-06-27 19:42:02 +00:00
Dan Stillman
672ca5956e Fix the item creation SQL call to properly calculate the note count for numNotes() 2006-06-27 19:29:05 +00:00
Dan Stillman
d6fa0455e1 Fixes #29, independent notes
- Added 'note' item type

- Updated API to support independent note creation

Notes are, more or less, just regular items, with an item type of 1. They're created through Scholar.Notes.add(text, sourceItemID), which returns the itemID of the new note. sourceItemID is optional--if left out, an independent note will be created. (There's currently nothing stopping you from doing getNewItemByType(1) yourself, but the note would be contentless and broken, so you shouldn't do that.) Note data could've been stuffed into itemData, but I kept it separate in itemNotes to keep metadata searching faster and to keep things cleaner.

Methods calls that can be called on all items:

isNote() (same as testing for itemTypeID 1)

Method calls that can be called on source items only:

numNotes()
getNotes() (array of note itemIDs for a source)

Method calls that can be called on note items only:

updateNote(text)
setNoteSource(sourceItemID) (for changing source--use empty or false to make independent, which is currently what happens when you delete a note--will get option with #91)
getNote() (note content)
getNoteSource() (sourceItemID of a note)

Calling the above methods on the wrong item types will throw an error.


*** This will break note creation/display until David updates interface code. ***
2006-06-27 15:14:07 +00:00
Dan Stillman
bc18f42f81 Fix issue with null values passed natively to DB query statements as bound statements 2006-06-27 14:14:40 +00:00
Dan Stillman
3b119d4c6e Fixes #89, once an item is added to the library, the item list is no longer updated on delete
(I think--Simon, reopen if not)
2006-06-27 05:42:35 +00:00
Simon Kornblith
257ed8f69b closes #68, figure out way to have scrapers work for gated resources behind proxies. most institutions use EZProxy for their proxy needs (or a more transparent proxy, which we support natively). this implementation is significantly better than the old one, which refused to work after you'd already logged in once, and is also simpler, because it's stateless. it has to observe every HTTP request, but there's no noticeable speed hit. it also still doesn't work when there's a link from one gated site to another gated site, but as far as i can tell, this only happens on the Gale Group site. 2006-06-27 04:08:21 +00:00
Simon Kornblith
19504e6746 - closes #73, use chrome for "Scraping Progress..." indicator
- multiple and book icons were swapped for Voyager scraper
2006-06-27 02:03:10 +00:00
Dan Stillman
031d78eeee Be a bit more helpful when calling getString() on a string with no localization 2006-06-26 20:41:09 +00:00
Simon Kornblith
4242c62b1b - Fix redundancy in utilities.js (I accidentally copied and pasted a much larger block of code than i meant to)
- Move processDocuments, a function for loading a DOM representation of a document or set of documents, to Scholar.Utilities.HTTP
- Add Scholar.Ingester.ingestURL, a simplified function to scrape a URL (closes #33)
2006-06-26 20:02:30 +00:00
David Norton
76c118e9e8 Fixes #25, add metadata to top of note 2006-06-26 19:38:56 +00:00
David Norton
77eadc3ea0 Treeview: Fixes problem with added items 2006-06-26 18:41:58 +00:00
Simon Kornblith
4535b220db Closes #84, make type icon in toolbar match item about to be scraped. It's not perfect, since to get everything right, we'd need to scrape the page as soon as it appears, but it provides a pretty good indication. Multiple items get the folder icon. If there's a better icon out there, it's pretty straightforward to implement. 2006-06-26 18:05:23 +00:00
David Norton
a5a27a7400 Fixes #27, collapsable/hierarchical notes in center pane.
- This required moving the icon to the title field so that the indent would work out right. The type column (which for new installs will be hidden) displays the type in text.
- I expect several small bugs in regard to this.
2006-06-26 17:51:18 +00:00
Simon Kornblith
cb647aa607 remove vestigial code pieces and make usage clearer for Scholar.Utilities.HTTP 2006-06-26 16:32:19 +00:00
Simon Kornblith
ed47e0c84c Forgot to commit updated utilities... 2006-06-26 16:19:44 +00:00
Simon Kornblith
04730860a6 Move Scholar.HTTP to Scholar.Utilities.HTTP; create Scholar.Utilities.Ingester.HTTPUtilities to handle proxied URLs for Ingester 2006-06-26 16:18:55 +00:00
Simon Kornblith
7148852955 make generic Scholar.Utilities class and HTTP-dependent Scholar.Utilities.Ingester and Scholar.Utilities.HTTP classes in preparation for import/export filters; split off into separate javascript file 2006-06-26 14:46:57 +00:00
David Norton
1096a95f62 Several little interface bugs fixed regarding Notes. 2006-06-26 14:46:21 +00:00
David Norton
b94cf81ba3 Trying this again:
Fixes #22, #26, #79, #71

Added remove note button, removed some old code.
2006-06-26 13:54:05 +00:00
David Norton
fb9e803ab5 closes #22, button in note pane for new note
closes #26, notes list in notes pane
closes #79, add icons for new object types
fixes #71, Metadata pane should be refreshed on a notify() event for the selected item
2006-06-26 12:58:22 +00:00
Simon Kornblith
303c6ee68d closes #41, get library call number 2006-06-26 01:08:59 +00:00
Dan Stillman
05c8b0e467 Fixes #60, make sure it works well offline
- Added detection for network failure -- debug message is output and noNetwork property is added to the xmlhttp object

- Removed onStatus callback from HTTP.doGet and HTTP.doPost -- that was copied over from the Piggy Bank API, but the onDone callback has to handle errors anyway, so it can just check the status code if it actually cares to differentiate non-200 status codes from any other error

- Added error handling for empty responseXML to Schema._updateScrapersRemoteCallback

- Renamed SCHOLAR_CONFIG['REPOSITORY_CHECK_RETRY'] to SCHOLAR_CONFIG['REPOSITORY_RETRY_INTERVAL']
2006-06-25 20:14:11 +00:00
Dan Stillman
480f9d56f6 Fixes #14, Add a callNumber field to all item types, and fixes #75, Add an "extra" field to all item types
I also added accessionNumber to all types (except website), since that's what Endnote does, but we may or may not think that's necessary
2006-06-25 18:10:27 +00:00
Simon Kornblith
5e73dcdd2e - Search results scraping for WorldCat.
- Make scraperJavaScript run on reload again, because it makes debugging easier
- There's not actually a memory leak in the proxyMonitor code.
2006-06-25 16:13:47 +00:00
Dan Stillman
dc8c695855 Fixes #11, Observe user pref to turn off automatic scraper updates 2006-06-25 07:34:03 +00:00
Dan Stillman
691993a6c3 Added Scholar.Prefs, a front-end to the preferences service with simple get(pref) and set(pref, value) methods that will retrieve and set based on the type of the default value, which I believe should generally should fine -- for more fine-grained control, use Scholar.Prefs.prefBranch to access the branch directly
Scholar.Prefs also registers itself as a preferences observer and can be used to trigger actions when certain prefs are changed by editing the switch statement in the observe() method

Updated preferences.js to use Scholar.Prefs
2006-06-25 07:31:01 +00:00
Dan Stillman
b679bc6327 Fixes #62, Cache notes count for items 2006-06-25 05:43:00 +00:00
Dan Stillman
a207bf3817 Fixed error in History.add() call in Item.save() that was breaking new item inserts 2006-06-25 05:26:53 +00:00
Simon Kornblith
9e78d62b13 Better handling of itemTypes, and improved date handling in PubMed scraper. 2006-06-25 05:03:01 +00:00
David Norton
f941bc192c Switched Info and Notes tab back to their places. :-) 2006-06-25 04:57:52 +00:00
Dan Stillman
b2247e1dd2 Fixes #66, Need a function to get typeID given typeName
- Added methods getID(idOrName) and getName(idOrName) to Scholar.CreatorTypes and Scholar.ItemTypes to take either typeID or typeName

- Removed getTypeName() in each and changed references accordingly

- Streamlined both classes to be as similar as possible
2006-06-25 04:35:11 +00:00
Simon Kornblith
22eebc6cdf Addresses #68, figure out way to have scrapers work for gated resources behind proxies. We can now access pages through an EZProxy. We need to know what alternatives to EZProxy exist in order to support them. Also, fixes some spacing issues in browser.js. 2006-06-25 04:30:43 +00:00
Dan Stillman
b8ad832e74 Begin to work undo functionality into data layer -- currently just for Item.save()
History.undo()/redo() now reload the item, though changes won't show in open metadata pane due to #71

refs #67
2006-06-25 04:11:19 +00:00
Simon Kornblith
f897564f0e Temporary fix to get ingested item types right until #66 is implemented 2006-06-24 21:44:36 +00:00
Simon Kornblith
40fabb888c Addresses #65, back button fools ingester, and fixes bugs loading new tabs in the background. 2006-06-24 21:39:36 +00:00
Simon Kornblith
260ce80086 - Search results scraping for TLC. This is the last of the library scrapers.
- Minor fixes to ingester utilities.
2006-06-24 15:38:53 +00:00
Dan Stillman
97940c7470 Replaced all instances of "Firefox Scholar" (not counting the repository URL) with "Scholar for Firefox" for now 2006-06-24 09:08:12 +00:00
Dan Stillman
720960feb9 Addresses #5, Add as many item types as possible
New item types from Elena
2006-06-24 08:28:37 +00:00
Dan Stillman
22df47a0d3 A rough interface to add, remove and reorder item type fields -- at the moment just to make my life easier, but eventually could be adapted to allow end-user type/field editing, if we decide that's necessary 2006-06-24 08:23:54 +00:00
Dan Stillman
42578ace59 Fixes #61, creator caching sometimes malfunctions 2006-06-23 22:00:39 +00:00
Simon Kornblith
2a74e88416 - Make generalized function for finding search results case insensitive
- Scrape DRA search results
2006-06-23 20:09:48 +00:00
Simon Kornblith
098078627c - Make events listening for DOMContentLoaded listen for load, because DOMContentLoaded does not seem ready for prime time (hey, it's undocumented, what can you expect)
- Make Amazon scraper work with multiple documents
- Fix bugs in processDocuments
- Make Scholar.Ingester.Utilities.getItemArray() willing to take an array of DOM nodes to search for links, and finally take advantage of the fact that objects have no length
2006-06-23 03:02:30 +00:00
Simon Kornblith
470f7c463f The Voyager scraper now actually works on the search results page. 2006-06-22 20:50:57 +00:00
Simon Kornblith
3890e5f122 - Made ingester automatically create hidden browser objects, given a window object. This should make things much easier for both David and me.
- Multiple item detection code is now a part of the scraperJavaScript, rather than the scrapeDetectCode, and code to choose which items to add is part of Scholar.Ingester.Utilities, accessible from inside scrapers. The alternative approach would result in one request (or, in the case of JSTOR, three requests) per new item, while in some cases (e.g. Voyager) only one request is necessary to get all of the items.
2006-06-22 15:50:46 +00:00
Dan Stillman
726364d091 Scholar.History -- i.e. undo/redo functionality
Partially integrated into data layer, but I'm waiting to commit that part until I'm sure it won't break everything
2006-06-22 14:01:54 +00:00
Simon Kornblith
ca3a0e6e5d Beginnings of search result scraping (does not yet actually do the scraping, but does present the menu) 2006-06-22 02:43:40 +00:00
David Norton
428eab6a95 A cog menu each for collections and items (the same as the contextual menu, for now)
Moved the capture icon into the URL bar (invisible until you visit a scrapable page. Currently just displays a Book, but will change to the correct item types in the future?)
2006-06-22 00:13:21 +00:00
David Norton
718d613cdc Command-shift-S should now work as soon as you start Firefox.
Lots of localization, moving style out of XUL and into overlay.css
2006-06-21 23:22:37 +00:00
David Norton
27025befef Added "Disable automatic scraper updates" preference. (Up to Dan to implement this) 2006-06-21 22:31:52 +00:00
David Norton
77b8bfd0b2 Added tabs: Tags, Files (nothing there yet)
Added 'search options' toolbar on quick search (doesn't do anything yet)
2006-06-21 22:23:42 +00:00
Simon Kornblith
9a9621f39d Make net appear even before first page has loaded 2006-06-21 18:19:49 +00:00
Dan Stillman
6b2d9bb3e6 Don't break the extension right before we show it 2006-06-21 16:06:41 +00:00
Dan Stillman
336f92a832 Set repository check timer to 1 hour during development 2006-06-21 16:04:45 +00:00
Simon Kornblith
6d1e447154 - Remove load eventListener after it has been called once
- Capture editors from Google Books
2006-06-21 15:18:18 +00:00
Simon Kornblith
7d3deb5b9f - Make Scholar.Ingester.Utilities.loadDocument() attach an event handler to load rather than DOMContentLoaded to resolve an issue with the Ex Libris/Aleph scraper (VCU)
- When possible, corporate creators/contributors are categorized with their own RDF types (prefixDummy + "corporateCreator/corporateContributor)
- Remove extraneous debug code in extensions
2006-06-21 01:41:07 +00:00
Dan Stillman
6c89acbe0d Scholar.inArray(needle, haystack) and Scholar.arraySearch(needle, haystack) -- versions of the PHP functions for JS 2006-06-20 17:32:40 +00:00
David Norton
6b002f7566 Got some new icons for the lists
Toolbar buttons are now icons
2006-06-20 17:08:30 +00:00
Simon Kornblith
09d79d6dd7 Fix overly optimistic JSTOR scraper 2006-06-20 17:06:41 +00:00
Dan Stillman
a3df0c39e2 - DB parameters can now be bound using the native JS type rather than by specifying the type explicitly (e.g. Scholar.DB.query(sql, [1, 2, "hello"]) -- for use when the data is generated internally and trusted, obviously
- Don't try to display an SQLite error when it's "not an error" (i.e. when the error is in something else)

- Switch to nsIFile instead of nsILocalFile to retrieve the profile directory
2006-06-20 15:42:01 +00:00
Dan Stillman
d239e6e4ba Typo in trigger() call in Collection.addItem() (thanks David) 2006-06-20 15:28:20 +00:00
Dan Stillman
95ca76545f QA testing of extension performance aboard trains
Fix in Collection.erase() -- when the DB methods started returning values in their native type, the collection id became an int rather than a string and "new Array(this._id)" became a length declaration rather than an elements declaration
2006-06-20 15:23:44 +00:00
David Norton
8f38c09c2e Ignore case on sorting. 2006-06-20 14:36:49 +00:00
Simon Kornblith
5af10b1061 - Fix small bug in ingester interface 2006-06-20 14:16:15 +00:00
David Norton
9f1cbf3177 Added back the Add menu with itemTypes.
Minor text changes
2006-06-20 13:59:59 +00:00
Simon Kornblith
c983a8e7e4 - Re-named Scholar.Ingester.Interface to Scholar_Ingester_Interface (since Scholar object is defined in XPCOM and thus global) 2006-06-20 00:52:15 +00:00
David Norton
d87f68e8e8 Double click an item to un-collapse the item pane.
The item pane remembers whether or not it was collapsed.
2006-06-19 18:43:21 +00:00
David Norton
8d50874d6b [interface] You can now change an item's type via menu. 2006-06-19 15:45:32 +00:00
David Norton
c345b90b9a Contextual menus - Collections, Items.
Moved close button to a more sensible place.
On Item Add: Clear search text, and select Info tab.
Minor function renames.
2006-06-19 15:00:13 +00:00
Simon Kornblith
20369f41b3 - Move commonly used scraper functions to ingester.js, rather than re-defining them in each scraper. This breaks Piggy Bank compatibility in our scrapers, but we will still be able to export our scrapers in a Piggy Bank compatible form.
- Better handling of scraper RDF to item mapping.
- Improved date handling. All scrapers now return ISO-style dates when possible.
2006-06-18 19:04:32 +00:00
Simon Kornblith
3d881eec13 - Make scrapers return standard ISO-style YYYY-MM-DD dates. Still need to work on journal article scrapers.
- Ingester lets callback function save items, rather than saving them itself.
- Better handling of multiple items in API, although no scrapers currently implement this.
2006-06-17 21:21:15 +00:00
David Norton
953b1f9d20 Lots of little things:
- Fix item modify notify() on 1st row.
 - Ensure that new items are visible when added.
 - New functionality for creating new items (prevents a lot of problems).
 - Number-based fields display properly.
 - Fixed bug when creating and saving the first notes on an item.
 - New notes won't save empty.
2006-06-17 00:57:50 +00:00
Dan Stillman
32ce0da44a Restore the statement.reset() in valueQuery() that I accidentally deleted in r216 2006-06-16 22:17:46 +00:00
Dan Stillman
bfa25cae37 Display SQLite error in exceptions thrown from commitTransaction() and rollbackTransaction() (like the ones on field value updates that I'm trying to figure out at the moment) 2006-06-16 22:15:07 +00:00
Dan Stillman
e8ed4281f9 Change the DB query functions to return values of the actual types they are, rather than to return everything as strings -- this will prevent the need for parseInt on COUNT(*) values, etc. and is generally better
This will temporarily break the display of numeric fields on the interface side
2006-06-16 21:44:41 +00:00
Dan Stillman
936ef86584 Fix Item.numNotes() and Item.getNotes() to work on items not yet in the DB (return 0 and [], respectively) 2006-06-16 21:33:03 +00:00
David Norton
bf0626cb58 [interface] All editing elements that look like labels but provide functionality now offer hover feedback
[fix] You shouldn't lose your changes if you select another item in the middle of editing a field.
[fix] The dropdown menu to select notes doesn't steal the focus
2006-06-16 17:21:30 +00:00
David Norton
380584986a [fix] If you do a sort, modify a note, etc. it does not reload the selected item
[interface/fix] There will always be a secondary sort on date modified. (fixes the infamous Turkle Toggle issue once and for all)
2006-06-16 16:30:03 +00:00
Dan Stillman
4904c04e3e Add dateCreated and dateModified columns to itemNotes
Update itemNotes.dateModified on item update
2006-06-16 16:09:18 +00:00
Dan Stillman
3f27a12b0f Trigger notify('modify', 'item', noteID) on note modify
Added method Item.updateDateModified to just change the date -- used on note updates

Delete item notes on item delete
2006-06-16 15:57:52 +00:00
David Norton
942c6d5da2 [interface] Number of notes column in items tree 2006-06-16 15:27:22 +00:00
Dan Stillman
08a570a38a Item.numNotes() 2006-06-16 15:18:01 +00:00
David Norton
3cdcf3093a [interface] Confirms delete of note
[fix] Minor fix - no more exception on ItemTreeView when you hit the left or right arrow
[ignore] simplified some checking in the note code.
2006-06-16 15:15:42 +00:00
David Norton
8ff6c48001 [interface] Custom textbox binding: multiline and timed together.
[interface] Multiple notes: works like a charm
2006-06-16 14:39:18 +00:00
Dan Stillman
47d59f2dc1 Add note contents to search 2006-06-16 08:04:01 +00:00
Dan Stillman
7a8ddb1beb Fix logic in _noteToTitle in itemPane.js (if no newline in note the title would be "Untitled Note") -- though it'd be better to do what Stickies do and just find the first bit of text, even if it's not on the
first line (regex is probably easiest)
2006-06-16 07:44:55 +00:00
Dan Stillman
fd85af40f8 Many-to-one item note support in the schema and data layer -- still some issues on (I think) the interface side 2006-06-16 07:32:48 +00:00
David Norton
e417d8e690 [interface] Although commented out, code in place to accept URL drags into collections (waiting on an Ingester.scrapeURL function)
[interface] Multi-notes functionality (waiting on data layer)
[docs] Major internal documentation written for itemTreeView.js and collectionTreeView.js (this actually does work ;-))
2006-06-15 22:35:48 +00:00
Dan Stillman
f635ee7788 Make the retry interval 60 minutes, not 60 seconds 2006-06-15 21:24:04 +00:00
Dan Stillman
8e97675cc9 Added a timer to run repository checks while the browser is up
Added a separate retry interval so that the extension retries sooner after failures (browser offline, request failure, etc.)

Revision 200 -- w00t i am victorious
2006-06-15 21:06:24 +00:00
Dan Stillman
2d20fe717d Added Scholar.HTTP.browserIsOffline() and changed doGet() and doPost() to return false if so 2006-06-15 16:52:46 +00:00
Dan Stillman
11a056ecd4 _getDBVersion() caches the version number, so make sure _updateDBVersion() updates it 2006-06-15 16:28:11 +00:00
Dan Stillman
70216ea2c7 - Added automatic scraper update mechanism (more details on Basecamp: http://chnm.grouphub.com/C2687015)
- Removed localLastUpdated field from scrapers table and renamed centralLastUpdated to lastUpdated; updated scraper queries accordingly

- Added query in scrapers.sql to update version table 'repository' row to prevent immediate downloads of newly installed scrapers

- Get version property from extension manager in Scholar.init() and assign to Scholar.version
2006-06-15 06:13:02 +00:00
David Norton
70be7cf8fd Switched Notes and Info tabs.
The tabbox should always fill the allotted space. Hopefully?
2006-06-14 17:43:02 +00:00
Dan Stillman
8ed37732c1 JS Date() takes months 0-11, for reasons that are far from clear 2006-06-14 16:59:29 +00:00
David Norton
2399f044e1 [Drag and Drop] in the Collections Tree: Now checks to make sure that the correct type is being dragged, and that you aren't dropping a folder into subfolders, etc.
[Drag and Drop] in Items Tree: You can drag items from one window into another, directly into the Items list.
[Editing] Close the edit box and save when you click on its label
2006-06-14 15:51:05 +00:00
Dan Stillman
c8a74e96cd Don't be dumb 2006-06-14 15:41:25 +00:00
David Norton
3e11379c3a Notes now automatically save - no "save" button.
The collections list does not resize randomly now.
The pane on the right stays open all the time - even when 0/multiple items are selected. This is to avoid frequent resizing of the items pane.
Temporarily, if the first "word" of a field's value is more than 29 characters long, it will set it to crop. This is for the long URLs, etc.
2006-06-13 20:45:30 +00:00
Dan Stillman
ba16889bb0 Moved the Scholar.Hash constructor out of the main Scholar constructor, where I had put it for some reason -- ignore 2006-06-13 15:14:22 +00:00
Dan Stillman
ca2045a305 Scholar.Date.sqlToDate(string sqldate) -- function to convert SQL-formatted date (e.g. '2006-06-13 11:03:05' or '2006-06-13') into a JS date object 2006-06-13 15:07:08 +00:00
Dan Stillman
39f9d2c3b3 Wrapper functions for XMLHTTPRequest in scholar.js, stolen and adapted slightly from Simon's ingester code (those override the mime type to text/plain and only use responseText, I assume to conform to the Piggy Bank API, so unfortunately we can't use the same ones elsewhere)
Scholar.HTTP.doGet(url, onStatus, onDone) and Scholar.HTTP.doPost(url, body, onStatus, onDone) -- onStatus and onDone are callbacks to call on non-200 responses and the response body, respectively
2006-06-13 14:53:38 +00:00
Dan Stillman
d42258b168 Changed schema of scrapers table to use single GUID for scraperID
Assigned guids to scrapers, replaced INSERT queries with REPLACE queries, and removed table DELETE query at top -- this will allow scrapers to be updated without deleting any others that may exist (e.g. that someone is developing, third-party, etc.)
2006-06-12 15:43:24 +00:00
David Norton
37c0a61393 [style] collection icons have padding 2006-06-12 13:56:36 +00:00
Dan Stillman
0b1765b549 Move CreatorTypes constructor in code -- ignore 2006-06-12 13:08:36 +00:00
Dan Stillman
c24c148e0b Cache creator type names to prevent repeated DB lookups in CreatorTypes.getTypeName() 2006-06-12 13:05:30 +00:00
Dan Stillman
5a045f5b50 Cache item type names to prevent repeated DB lookups in ItemTypes.getTypeName() 2006-06-12 12:59:25 +00:00
David Norton
b1389bfc61 [interface] Item Type column (will show up on the right if you already have Scholar installed, but on the left for all new installations.), sortable.
[style] Better add/remove Creator buttons.
[fix] The sorting should not randomly switch the order of two items with the same sort value (eg, Barnes vs. Barnes).
[fix] The browser should not open with two sorted columns.
2006-06-12 12:43:20 +00:00
David Norton
cebd6bde5b [interface] Images now appear on the collections tree and items tree. (yes, they are ugly). 2006-06-09 16:36:18 +00:00
David Norton
68fed95e8f Renamed metadataPane.js/xul to match previous change. 2006-06-09 15:54:44 +00:00
David Norton
a7b35c0286 [interface] Preliminary note editing support.
[other] MetadataPane renamed ScholarItemPane.
2006-06-09 15:52:40 +00:00
David Norton
fbcd247b09 Cleaned up the code in the tree views.
Fixed a bug on 'add' - items showing up in Library even if they were already there.
2006-06-09 14:42:53 +00:00
David Norton
9f7437f5ca [interface] itemsTreeView correctly handles notify(erase)
[data access] Collection.removeItem() calls trigger() with the right type
2006-06-09 14:01:07 +00:00
David Norton
14ba1b8fbc [interface] collection stays selected on drag-and-drop.
[interface] Collections notify() cleaned up a bit.
2006-06-08 21:47:33 +00:00
Dan Stillman
9daa0d3303 Added 'notes' field to fields table and sample data (changes are less messy than they look--I just put 'notes' after 'rights' and 'source' and incremented the other fieldIDs)
scholar.properties addition is just to keep metadata panel from breaking and could probably be removed once interface is hard-coded to not display the notes field there
2006-06-08 21:30:22 +00:00
Dan Stillman
c3acdf04a6 Don't mark item as changed if setField('') is called on an empty field (i.e. prevent unnecessary save() calls) 2006-06-08 21:08:50 +00:00
Dan Stillman
3715f2c89e - Send a 'modify' to collections in addItem() and removeItem() when collections become or stop being empty
- Send a 'delete' rather than a 'remove' to itemViews when items are actually deleted (removals from collections still get 'remove' unless it's part of a collection erase)
2006-06-08 20:41:37 +00:00
David Norton
368724b7de [interface] Collections should keep their open state on a drop. 2006-06-08 20:28:50 +00:00
Dan Stillman
7c9b1f785c Only send itemView 'remove' notifictions for items if they're actually deleted from the DB, not if they're just removed from a collection 2006-06-08 20:02:26 +00:00
Dan Stillman
01f50b9e4b On Collection.changeParent(), change notify() action to 'move', and always send a three-value array in the order [collectionID, previousParent, newParent] -- 2nd or 3rd param will be null if moving from/to root 2006-06-08 19:58:54 +00:00
David Norton
1336842d74 [interface] You should now be able to drop collections below the library (into root).
[interface] New items are automatically selected.
2006-06-08 19:34:58 +00:00
Dan Stillman
4545a5d8a8 Collection.hasDescendent(type, id) -- type is 'collection' or 'item', for now 2006-06-08 19:11:10 +00:00
Dan Stillman
15ec35c927 Reload collections (all, for now) on changeParent() to refresh hasChildCollections() 2006-06-08 18:53:49 +00:00
David Norton
1d14c69ad5 [interface] Preliminary drag-and-drop.
1) Items into collections.
  2) Collections into collections.
	Dan S, please check this out, I am getting some exceptions from the data access portion.
[interface] Temporarily, "metadata" pane on the right is not resizable.
2006-06-08 18:42:55 +00:00
Simon Kornblith
076ee0fad2 Add PubMed scraper, fix a few other small bugs 2006-06-08 01:26:40 +00:00
Dan Stillman
393d19ca85 Fix SQL error on middle creator remove
Added creatorTypeID to the PK in itemCreators, because a creator could conceivably have two roles on an item

Throw an error if attempt to save() an item with two identical creator/creatorTypeID combinations, since, assuming this shouldn't be allowed (i.e. we don't have a four-column PK), there's really no way to handle this elegantly on my end -- interface code can use new method Item.creatorExists(firstName, lastName, creatorTypeID, skipIndex), with skipIndex set to the current index, to make sure this isn't done
2006-06-08 00:16:35 +00:00
David Norton
8fc4a02814 [interface] You can resize the view/edit pane on the right.
[interface] You can press 'escape' on editing a field to cancel changes.
[style] The add/remove creator buttons provide rollover feedback.
2006-06-07 18:20:45 +00:00
David Norton
eba82e2ac6 ItemTreeView remembers the selection on notify().
MetadataPane editing updated a lot -- creator support added.

Source column is hidden on default.
2006-06-07 16:19:56 +00:00
Dan Stillman
393807b152 This isn't quite done (I'm discussing changing the scrapers schema with Simon to better handle scraper updates) but in the interest of getting the scrapers in for testing, I'll commit this now.
Integrated the scrapers with the schema update mechanism. Changed a bunch of schema methods to handle both schema.sql and scrapers.sql (or others, if need be) and altered the version table to track mu
ltiple versions for different files. This theoretically should detect that the version table has changed and force a reinitialization of the DB--let me know if there are problems.
2006-06-07 15:27:21 +00:00
Dan Stillman
882a96ee40 Fixed brokenness on schema reinitialization 2006-06-07 14:35:04 +00:00
Dan Stillman
448fde9ff1 Made the schema update system moderately less convoluted
- Broke schema functions into separate object and got rid of DB_VERSION config constant in favor of a toVersion variable in the _migrateSchema command (which isn't technically necessary either, since the version number at the top of schema.sql is now always compared to the DB version at startup) but will help reduce the chance that someone will update the schema file without adding migration steps)

- Removed Amazon scraper from schema.sql, as it will be loaded with the rest of the scrapers
2006-06-07 01:02:59 +00:00
David Norton
098e90fea9 Search field now searches only selection Library/Project.
- Sort stays
 - Selection remembered

New functions: saveSelection(), rememberSelection() on ItemTreeView
2006-06-06 22:43:58 +00:00
Simon Kornblith
0753d78910 - Add VLTS scraper
- Fix loadDocument/processDocuments (broken by r145)
2006-06-06 21:35:23 +00:00
Dan Stillman
9bcaad5946 Added optional second param to Items.search() to restrict search to a particular collectionID 2006-06-06 20:46:08 +00:00