[annotator-dev] How to query annotations created by current user only

Chris Reeve paradigmsareconstructed at gmail.com
Thu Nov 27 00:59:18 UTC 2014


Hi, I am about to enter a coding academy (either Hack Reactor or General
Assembly), and have some super-newb questions to ask about the technology
stack.  I am very interested in doing an annotations-based project.  I went
to the last iAnnotate conference, but have only been working with
Javascript for about four months now.

Does anybody have a moment to entertain some questions?  Or, should I just
post here ...?

chris

On Wed, Nov 26, 2014 at 4:47 PM, Rick <rmercer33 at gmail.com> wrote:

> Thanks for the help Bird, your suggestion works great. I see that I didn't
> understand the documentation.
>
> I do have another question if you don't mind.
>
> For the PUT and DELETE endpoints, the annotator does not use the
> /api/annotator/:id pattern but sends the annotation in the request body and
> calls /api/annotator. I can get the 'id' from the body so can make it work
> but this behavior does not correspond to the docs. Any idea what's going on?
>
> Thanks again,
>
> Rick
>
> On Tue, Nov 25, 2014 at 12:46 AM, Sarah Bird - Bonvaya <sarah at bonvaya.com>
> wrote:
>
>> Hi Rick,
>>
>> This is how I do something similar:
>>
>> a.annotator('addPlugin', 'Store', {
>>   prefix: 'http://annotateit.org/api',
>>   annotationData: {
>>     'project': PROJECTNAME,
>>     'version': VERSION,
>>     'uri': URI,
>>     'siteuid': SITE_UNIQUE_ID,
>>     'pageuid': PAGE_UNIQUE_ID
>>   },
>>   loadFromSearch: {
>>     'pageuid': PAGE_UNIQUE_ID.toLowerCase(),
>>     'limit': 1000
>>   }
>> });
>>
>> (
>> https://github.com/open-contracting/standard-collaborator/blob/master/django/website/main/templates/main/standard.html#L91
>> )
>>
>> I am adding custom data, and searching based on that.
>>
>> In your case, I imagine this should work:
>>
>> a.annotator('addPlugin', 'Store', {
>>   prefix: 'http://annotateit.org/api',
>>   annotationData: {
>>     "docId":that.data._id,
>>     "userId":Meteor.userId()
>>   },
>>   loadFromSearch: {
>>     'userId': Meteor.userId(),
>>     'limit': 1000
>>   }
>> });
>>
>> Assuming your store endpoint has a search api working.
>>
>> Best,
>>
>> Bird
>>
>>
>> On Thu, Nov 20, 2014 at 5:47 PM, Rick <rmercer33 at gmail.com> wrote:
>>
>>> Hi All,
>>>
>>> I'm using annotator.js v 1.2.9 and using the Store plugin with Meteor
>>> and MongoDB.
>>>
>>> I want only annotations created by the current user to be displayed.
>>>
>>> When annotator is first initialized it makes a GET request to receive
>>> all annotations. Rather than return all annotations I want to return only
>>> those created by the current user (on the current page).
>>>
>>> But the GET request does not include any user information that can be
>>> used to query the database. I tried using the annotationData option of the
>>> Store plugin but that info is not part of the GET request - but is part of
>>> the annotation json object in the body of a POST.
>>>
>>> that.$('#document').annotator()
>>>         .annotator("addPlugin", 'Store', {
>>>           prefix: '/api',
>>>           annotationData: {"docId":that.data._id,
>>> "userId":Meteor.userId()}
>>>         })
>>>
>>>
>>> I tried the Permissions plugin and can see how that prevents others from
>>> editing or deleting an annotation they did not create but It doesn't seem
>>> to work when I try to restrict readers to just the creator. Here's my code
>>> for that:
>>>
>>>   var userInfo = {id:Meteor.userId(),
>>> email:Meteor.user().emails[0].address};
>>>
>>>
>>> .annotator("addPlugin", 'Permissions', {
>>>           user: userInfo,
>>>           userId: function(user) {
>>>             if (user && user.id) {
>>>               return user.id;
>>>             }
>>>             else
>>>               return user
>>>           },
>>>           userString: function(user) {
>>>             if (user && user.id) {
>>>               return user.email;
>>>             }
>>>             else
>>>               return user
>>>           },
>>>           permissions: {
>>>             'read': [userInfo.id],
>>>             'update': [userInfo.id],
>>>             'delete': [userInfo.id],
>>>             'admin': [userInfo.id]
>>>           },
>>>           showViewPermissionsCheckbox: false,
>>>           showEditPermissionsCheckbox: false
>>>         })
>>>
>>>
>>> I also tried the Auth plugin which adds an 'x-annotator-auth-token' key
>>> to the request header and I can use that token to obtain user info but, the
>>> token is not added to the GET request.
>>>
>>> So, I don't know how to proceed. All help is gratefully appreciated.
>>>
>>> Thanks in advance.
>>>
>>> Rick ;-)
>>>
>>> _______________________________________________
>>> annotator-dev mailing list
>>> annotator-dev at lists.okfn.org
>>> https://lists.okfn.org/mailman/listinfo/annotator-dev
>>> Unsubscribe: https://lists.okfn.org/mailman/options/annotator-dev
>>>
>>>
>>
>> _______________________________________________
>> annotator-dev mailing list
>> annotator-dev at lists.okfn.org
>> https://lists.okfn.org/mailman/listinfo/annotator-dev
>> Unsubscribe: https://lists.okfn.org/mailman/options/annotator-dev
>>
>>
>
> _______________________________________________
> annotator-dev mailing list
> annotator-dev at lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/annotator-dev
> Unsubscribe: https://lists.okfn.org/mailman/options/annotator-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/annotator-dev/attachments/20141126/17e24a5e/attachment-0004.html>


More information about the annotator-dev mailing list