add canExportAnnotations capability

This commit is contained in:
rolux 2014-09-18 17:29:50 +02:00
parent dd6ee74b71
commit 058350c241
3 changed files with 2 additions and 803 deletions

View file

@ -36,6 +36,7 @@
"canEditRightsLevel": {"researcher": true, "staff": true, "admin": true},
"canEditSitePages": {"staff": true, "admin": true},
"canEditUsers": {"staff": true, "admin": true},
"canExportAnnotations": {"member": true, "researcher": true, "staff": true, "admin": true},
"canImportAnnotations": {"researcher": true, "staff": true, "admin": true},
"canManageDocuments": {"member": true, "researcher": true, "staff": true, "admin": true},
"canManagePlacesAndEvents": {"member": true, "researcher": true, "staff": true, "admin": true},

View file

@ -1,802 +0,0 @@
/*
Pan.do/ra Settings
You can edit this file.
*/
{
"annotations": {
"showUsers": true
},
"cantPlay": {
"icon": "",
"link": "",
"text": ""
},
/*
Capabilities are per user level.
They can either be general:
{level: true} means a user of that level has the capability)
or related to items:
{level: x} means a user of that level has the capability
for items of a rights level up to and including x
*/
"capabilities": {
"canAddItems": {"member": true, "staff": true, "admin": true},
"canDownloadVideo": {"guest": 0, "member": 0, "staff": 4, "admin": 4},
"canEditAnnotations": {"staff": true, "admin": true},
"canEditDocuments": {"staff": true, "admin": true},
"canEditEvents": {"staff": true, "admin": true},
"canEditFeaturedEdits": {"staff": true, "admin": true},
"canEditFeaturedLists": {"staff": true, "admin": true},
"canEditFeaturedTexts": {"staff": true, "admin": true},
"canEditMedia": {"staff": true, "admin": true},
"canEditMetadata": {"staff": true, "admin": true},
"canEditPlaces": {"staff": true, "admin": true},
"canEditRightsLevel": {"member": true, "staff": true, "admin": true},
"canEditSitePages": {"staff": true, "admin": true},
"canEditUsers": {"admin": true},
"canImportAnnotations": {"member": true, "staff": true, "admin": true},
"canManageDocuments": {"member": true, "staff": true, "admin": true},
"canManagePlacesAndEvents": {"member": true, "staff": true, "admin": true},
"canManageTitlesAndNames": {"member": true, "staff": true, "admin": true},
"canManageUsers": {"staff": true, "admin": true},
"canPlayClips": {"guest": 1, "member": 1, "staff": 4, "admin": 4},
"canPlayVideo": {"guest": 1, "member": 1, "staff": 4, "admin": 4},
"canReadText": {"guest": 0, "member": 0, "staff": 1, "admin": 1},
"canRemoveItems": {"admin": true},
"canSeeAccessed": {"staff": true, "admin": true},
"canSeeDebugMenu": {"staff": true, "admin": true},
"canSeeExtraItemViews": {"staff": true, "admin": true},
"canSeeMedia": {"staff": true, "admin": true},
"canSeeItem": {"guest": 1, "member": 1, "staff": 4, "admin": 4},
"canSeeSize": {"staff": true, "admin": true},
"canSeeSoftwareVersion": {"staff": true, "admin": true},
"canSendMail": {"staff": true, "admin": true}
},
/*
clipKeys are the properties that clips can be sorted by.
If sortOperator is not specified, it will be + for strings and - for numbers.
*/
"clipKeys": [
{"id": "text", "title": "Text", "type": "string"},
{"id": "position", "title": "Position", "type": "float", "sortOperator": "+"},
{"id": "duration", "title": "Duration", "type": "float"},
{"id": "hue", "title": "Hue", "type": "float", "sortOperator": "+"},
{"id": "saturation", "title": "Saturation", "type": "float"},
{"id": "lightness", "title": "Lightness", "type": "float"},
{"id": "volume", "title": "Volume", "type": "float"}
],
/*
clipLayers is the ordered list of public layers that will appear as the
text of clips. Excluding a layer from this list means it will not be
included in find annotations. // FIXME: the last bit is not implemented.
*/
"clipLayers": ["transcripts", "keywords", "places", "events", "descriptions"],
"flags": false,
"help": [
{"id": "help", "title": "Help"},
{"id": "accounts", "title": "Accounts"},
{"id": "navigation", "title": "Navigation"},
{"id": "views", "title": "Views"},
{"id": "timelines", "title": "Timelines"},
{"id": "clips", "title": "Clips"},
{"id": "maps", "title": "Maps"},
{"id": "calendars", "title": "Calendars"},
{"id": "find", "title": "Find"},
{"id": "filters", "title": "Filters"},
{"id": "lists", "title": "Lists"},
{"id": "player", "title": "Player"},
{"id": "editor", "title": "Editor"},
{"id": "documents", "title": "Documents"},
{"id": "edits", "title": "Edits"},
{"id": "texts", "title": "Texts"},
{"id": "embeds", "title": "Embeds"}
],
/*
An itemKey must have the following properties:
id: The id of the key (as known by the server)
title: The title of the key (as displayed by the client)
type: text, string, float, integer, or array of any of these
and can have any of the following properties:
autocomplete: If true, find element will autocomplete
autocompleteSort: Sort order of autocomplete suggestions
capability: A capability required to see this key
columnRequired: If true, the column can't be removed
columnWidth: Default column width in px
filter: if true, one can filter results by this key
find: If true, this key will appear as a find option
format: {type: "...", args: [...]}, for special formatting
(Ox.formatType(args) will be called)
secondaryId: If true, loading /value will redirect to the item
sort: If true, one can sort results by this key
sortOperator: sort operator (+, -), in case it differs from the
default for the key's type (+ for strings, - for numbers)
sortType: special sort type (title, person)
value: {key: "...", type: "..."}, for keys that are derived
from other keys (like number of actors), or "capability"
*/
"itemKeys": [
{
"id": "*",
"title": "All",
"type": "text",
"find": true
},
{
"id": "title",
"title": "Title",
"type": "string",
"autocomplete": true,
"autocompleteSort": [{"key": "timesaccessed", "operator": "-"}],
"columnRequired": true,
"columnWidth": 180,
"find": true,
"sort": true,
"sortType": "title"
},
{
"id": "source",
"title": "Source",
"type": "string",
"autocomplete": true,
"description": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true
},
{
"id": "project",
"title": "Project",
"type": "string",
"autocomplete": true,
"description": true,
"columnWidth": 120,
"filter": true,
"find": true,
"sort": true
},
{
"id": "topic",
"title": "Topic",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true
},
{
"id": "name",
"title": "People",
"type": ["string"],
"autocomplete": true,
"filter": true,
"find": true
},
{
"id": "director",
"title": "Director",
"type": ["string"],
"autocomplete": true,
"columnRequired": true,
"columnWidth": 180,
"sort": true,
"sortType": "person"
},
{
"id": "cinematographer",
"title": "Cinematographer",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"sort": true,
"sortType": "person"
},
{
"id": "featuring",
"title": "Featuring",
"type": ["string"],
"autocomplete": true,
"columnRequired": true,
"columnWidth": 180,
"filter": true,
"sort": true,
"sortType": "person"
},
{
"id": "language",
"title": "Language",
"type": ["string"],
"autocomplete": true,
"columnWidth": 120,
"filter": true,
"find": true,
"sort": true
},
{
"id": "location",
"title": "Location",
"type": "string",
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true
},
{
"id": "date",
"title": "Date",
"type": "string",
"columnWidth": 120,
//"format": {"type": "date", "args": ["%a, %b %e, %Y"]},
"sort": true
},
{
"id": "summary",
"title": "Summary",
"type": "text",
"find": true
},
{
"id": "notes",
"title": "Notes",
"type": "text",
"capability": "canEditMetadata"
},
{
"id": "id",
"title": "ID",
"type": "string",
"columnWidth": 90,
"sort": true
},
{
"id": "annotations",
"title": "Annotations",
"type": "string", // fixme: not the best type for this magic key
"find": true
},
{
"id": "places",
"title": "Places",
"type": "layer",
"filter": true,
"find": true
},
{
"id": "events",
"title": "Events",
"type": "layer",
"filter": true,
"find": true
},
{
"id": "keywords",
"title": "Keywords",
"type": "layer",
"filter": true,
"find": true
},
{
"id": "descriptions",
"title": "Descriptions",
"type": "layer",
"find": true
},
{
"id": "transcripts",
"title": "Transcripts",
"type": "layer",
"find": true
},
{
"id": "numberofannotations",
"title": "Annotations",
"type": "integer",
"columnWidth": 60,
"sort": true
},
{
"id": "duration",
"title": "Duration",
"type": "time",
"columnWidth": 90,
"format": {"type": "duration", "args": [0, "short"]},
"sort": true
},
{
"id": "resolution",
"title": "Resolution",
"type": ["integer"],
"columnWidth": 90,
"format": {"type": "resolution", "args": ["px"]},
"sort": true
},
{
"id": "aspectratio",
"title": "Aspect Ratio",
"type": "float",
"columnWidth": 90,
"format": {"type": "unit", "args": [":1", 3]},
"sort": true
},
{
"id": "pixels",
"title": "Pixels",
"type": "integer",
"columnWidth": 90,
"format": {"type": "value", "args": ["px"]},
"sort": true
},
{
"id": "hue",
"title": "Hue",
"type": "hue",
"columnWidth": 90,
"format": {"type": "color", "args": ["hue"]},
"sort": true,
"sortOperator": "+"
},
{
"id": "saturation",
"title": "Saturation",
"type": "float",
"columnWidth": 90,
"format": {"type": "color", "args": ["saturation"]},
"sort": true
},
{
"id": "lightness",
"title": "Lightness",
"type": "float",
"columnWidth": 90,
"format": {"type": "color", "args": ["lightness"]},
"sort": true
},
{
"id": "volume",
"title": "Volume",
"type": "float",
"columnWidth": 60,
"format": {"type": "color", "args": ["lightness"]},
"sort": true
},
{
"id": "numberofcuts",
"title": "Number of Cuts",
"type": "integer",
"columnWidth": 60,
"format": {"type": "number", "args": []},
"sort": true,
"value": {"key": "cuts", "type": "length"}
},
{
"id": "cutsperminute",
"title": "Cuts per Minute",
"type": "float",
"columnWidth": 60,
"format": {"type": "number", "args": [3]},
"sort": true,
"value": {"key": "cuts", "type": "lengthperminute"}
},
{
"id": "words",
"title": "Number of Words",
"type": "integer",
"columnWidth": 60,
"format": {"type": "number", "args": []},
"sort": true,
"value": {"layer": "transcripts", "type": "words"}
},
{
"id": "wordsperminute",
"title": "Words per Minute",
"type": "float",
"columnWidth": 60,
"format": {"type": "number", "args": [3]},
"sort": true,
"value": {"layer": "transcripts", "type": "wordsperminute"}
},
{
"id": "size",
"title": "Size",
"type": "integer",
"capability": "canSeeMedia",
"columnWidth": 60,
"format": {"type": "value", "args": ["B"]},
"sort": true
},
{
"id": "bitrate",
"title": "Bitrate",
"type": "integer",
"columnWidth": 60,
"format": {"type": "value", "args": ["bps"]},
"sort": true
},
{
"id": "numberoffiles",
"title": "Number of Files",
"type": "integer",
"capability": "canSeeMedia",
"columnWidth": 60,
"sort": true,
"value": {"key": "files", "type": "length"}
},
{
"id": "user",
"title": "User",
"type": "string",
"capability": "canSeeMedia",
"find": true
},
{
"id": "groups",
"title": "Group",
"type": ["string"]
},
{
"id": "filename",
"title": "Filename",
"type": ["string"],
"capability": "canSeeMedia",
"find": true
},
{
"id": "created",
"title": "Date Created",
"type": "date",
"columnWidth": 120,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "modified",
"title": "Last Modified",
"type": "date",
"columnWidth": 90,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "accessed",
"title": "Last Accessed",
"type": "date",
"capability": "canSeeAccessed",
"columnWidth": 90,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "timesaccessed",
"title": "Times Accessed",
"type": "integer",
"capability": "canSeeAccessed",
"columnWidth": 60,
"format": {"type": "number", "args": []},
"sort": true
},
{
"id": "license",
"title": "License",
"type": ["string"],
"columnWidth": 120,
"filter": true,
"sort": true,
"default": [
"Creative Commons Attribution-ShareAlike 3.0 License",
"Pad.ma General Public License"
]
},
{
"id": "rightslevel",
"title": "Rights Level",
"type": "enum",
"columnWidth": 90,
"format": {"type": "ColorLevel", "args": [
["Public", "Restricted", "Private"]
]},
"sort": true,
"sortOperator": "+",
"values": ["Public", "Restricted", "Private", "Unknown"]
},
{
"id": "random",
"title": "Random",
"type": "integer",
"sort": true
}
],
"itemName": {
"singular": "Video",
"plural": "Videos"
},
"itemRequiresVideo": true,
"itemViews": [
{"id": "info", "title": "Info"},
{"id": "player", "title": "Player"},
{"id": "editor", "title": "Editor"},
{"id": "timeline", "title": "Timeline"},
{"id": "clips", "title": "Clips"},
{"id": "map", "title": "Map"},
{"id": "calendar", "title": "Calendar"},
{"id": "documents", "title": "Documents"},
{"id": "data", "title": "Data"},
{"id": "media", "title": "Media"}
],
"language": "en",
"languages": ["ar", "el", "en", "hi"],
"layers": [
{
"id": "places",
"title": "Places",
"canAddAnnotations": {"member": true, "staff": true, "admin": true},
"item": "Place",
"overlap": true,
"type": "place"
},
{
"id": "events",
"title": "Events",
"canAddAnnotations": {"member": true, "staff": true, "admin": true},
"item": "Event",
"overlap": true,
"type": "event"
},
{
"id": "keywords",
"title": "Keywords",
"canAddAnnotations": {"member": true, "staff": true, "admin": true},
"item": "Keyword",
"overlap": true,
"type": "string"
},
{
"id": "descriptions",
"title": "Descriptions",
"canAddAnnotations": {"member": true, "staff": true, "admin": true},
"item": "Description",
"showInfo": true,
"type": "text"
},
{
"id": "transcripts",
"title": "Transcripts",
"canAddAnnotations": {"member": true, "staff": true, "admin": true},
"item": "Transcript",
"showInfo": true,
"type": "text"
}
],
"listViews": [
{"id": "list", "title": "as List"},
{"id": "grid", "title": "as Grid"},
{"id": "timelines", "title": "with Timelines"},
{"id": "clips", "title": "with Clips"},
{"id": "clip", "title": "as Clips"},
//{"id": "video", "title": "as Video"},
{"id": "map", "title": "on Map"},
{"id": "calendar", "title": "on Calendar"}
],
"media": {
"importPosters": false,
"importFrames": false
},
"menuExtras": [
"user",
//"locale",
"reload"
],
"personalLists": [
{"title": "Favorites"}
],
"posters": {
"ratio": 0.625
},
"rightsLevel": {"member": 2, "staff": 2, "admin": 2},
"rightsLevels": [
{"name": "Public", "color": [128, 255, 128]},
{"name": "Restricted", "color": [255, 192, 128]},
{"name": "Private", "color": [255, 128, 128]}
],
"sendReferrer": true,
"site": {
"description": "Pad.ma is an online archive of densely text-annotated video material, primarily footage and not finished films. The entire collection is searchable and viewable online, and is free to download for non-commercial use.",
"email": {
// E-mail address in contact form (to)
"contact": "pad.ma@pad.ma",
"footer": "-- \nPad.ma - http://pad.ma",
"prefix": "Pad.ma News -",
// E-mail address uses by the system (from)
"system": "system@pad.ma"
},
"https": true,
"id": "padma",
"name": "Pad.ma",
"url": "pad.ma",
"videoprefix": ""
},
"sitePages": [
{"id": "about", "title": "About"},
{"id": "news", "title": "News"},
//{"id": "tour", "title": "Take a Tour"},
{"id": "faq", "title": "Frequently Asked Questions"},
{"id": "terms", "title": "Terms of Service"},
{"id": "license", "title": "License"},
{"id": "contact", "title": "Contact"}
],
"sites": [
{"name": "Indiancine.ma", "url": "indiancine.ma", "https": true},
{"name": "OxDB", "url": "0xdb.org", "https": true}
],
"textRightsLevels": [
{"name": "Public", "color": [128, 255, 128]},
{"name": "Private", "color": [255, 128, 128]}
],
"themes": ["oxlight", "oxmedium", "oxdark"],
"timelines": [
{"id": "antialias", "title": "Anti-Alias"},
{"id": "slitscan", "title": "Slit-Scan"},
{"id": "keyframes", "title": "Keyframes"},
{"id": "audio", "title": "Waveform"}
],
"totals": [
{"id": "items"},
{"id": "files", "admin": true},
{"id": "duration", "admin": true},
{"id": "size", "admin": true},
{"id": "pixels"}
],
"tv": {
"showLogo": false
},
"user": {
"level": "guest",
"ui": {
"annotationsCalendarSize": 128,
"annotationsMapSize": 128,
"annotationsRange": "position",
"annotationsSize": 256,
"annotationsSort": "position",
"calendarFind": "",
"calendarSelection": "",
"clipColumns": 2,
"columns": {
"Colors": {
"columns": ["title", "source", "project", "language", "hue", "saturation", "brightness"],
"columnWidth": {}
}
},
"document": "",
"documents": {},
"documentSize": 256,
"documentsSelection": {},
"documentsSort": [{"key": "name", "operator": "+"}],
"documentsView": "grid",
"edit": "",
"edits": {},
"editSelection": [],
"editSort": [
{"key": "index", "operator": "+"},
{"key": "year", "operator": "+"},
{"key": "director", "operator": "+"},
{"key": "title", "operator": "+"},
{"key": "position", "operator": "+"},
{"key": "duration", "operator": "+"}
],
"editView": "list",
"embedSize": 256,
"filters": [
{"id": "source", "sort": [{"key": "name", "operator": "+"}]},
{"id": "project", "sort": [{"key": "name", "operator": "+"}]},
{"id": "topic", "sort": [{"key": "items", "operator": "-"}]},
{"id": "name", "sort": [{"key": "items", "operator": "-"}]},
{"id": "keywords", "sort": [{"key": "items", "operator": "-"}]},
{"id": "places", "sort": [{"key": "items", "operator": "-"}]}
],
"filtersSize": 176,
"find": {"conditions": [], "operator": "&"},
"followPlayer": true,
"help": "",
"icons": "frames",
"infoIconSize": 256,
"item": "",
"itemFind": "",
"itemSort": [{"key": "position", "operator": "+"}],
"itemView": "info",
"listColumns": ["title", "source", "project", "topic", "language", "duration"],
"listColumnWidth": {},
"listSelection": [],
"listSort": [{"key": "title", "operator": "+"}],
"listView": "grid",
"lists": {},
"locale": "en",
"mapFind": "",
"mapSelection": "",
"onload": "",
"page": "",
"part": {
"api": "",
"documents": "",
"faq": "",
"help": "",
"news": "",
"preferences": "",
"tv": ""
},
"section": "items",
"sequenceMode": "shape",
"sequenceSort": [{"key": "director", "operator": "+"}],
"showAdvancedEmbedOptions": false,
"showAnnotations": true,
"showAnnotationsCalendar": true,
"showAnnotationsMap": true,
"showBrowser": true,
"showCalendarControls": true, // fixme: should be false
"showClips": true,
"showDocument": true,
"showFilters": true,
"showIconBrowser": false,
"showInfo": true,
"showLayers": {
"places": false,
"events": false,
"keywords": true,
"descriptions": true,
"transcripts": true
},
"showMapControls": false,
"showMapLabels": false,
"showFolder": {
"edits": {
"personal": true,
"favorite": true,
"featured": true,
"volumes": true
},
"items": {
"personal": true,
"favorite": true,
"featured": true,
"volumes": true
},
"texts": {
"personal": true,
"favorite": true,
"featured": true
}
},
"showReflections": true,
"showSidebar": true,
"showSitePosters": false,
"showTimeline": true,
"sidebarSize": 256,
"text": "",
"texts": {},
"theme": "oxlight",
"updateAdvancedFindResults": false,
"videoLoop": false,
"videoMuted": false,
"videoPoints": {},
"videoResolution": 240,
"videoScale": "fit",
"videoSize": "large",
"videoSubtitles": false,
"videoTimeline": "antialias",
"videoView": "player",
"videoVolume": 1
},
"username": "",
"volumes": []
},
"userLevels": ["guest", "member", "staff", "admin"],
"video": {
"torrent": true,
"formats": ["webm", "mp4"],
"previewRatio": 1.3333333333,
//supported resolutions are
//1080, 720, 480, 432, 360, 288, 240, 144, 96
"resolutions": [96, 240, 480]
}
}

View file

@ -22,7 +22,7 @@ pandora.ui.editor = function(data) {
cuts: data.cuts || [],
duration: data.duration,
enableDownload: pandora.site.capabilities.canDownloadVideo[pandora.user.level] >= data.rightslevel || data.editable,
enableExport: true,
enableExport: pandora.site.capabilities.canExportAnnotations[pandora.user.level] || data.editable,
enableImport: pandora.site.capabilities.canImportAnnotations[pandora.user.level] || data.editable,
enableSetPosterFrame: !pandora.site.media.importFrames && data.editable,
enableSubtitles: ui.videoSubtitles,