Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

SAKIII-3710 - Provide text alternatives for any non-text content #1032

Closed
wants to merge 58 commits into from

4 participants

jsloane and others added some commits
@jsloane jsloane SAKIII-3709 checking templates in wcag unit test and fixing some fail…
…ures
d8ecea2
@jsloane jsloane SAKIII-3710 checking templates in wcag unit test and fixing some fail…
…ures
4b80070
@croby croby Merge branch 'v1.1' of github.com:sakaiproject/3akai-ux into v1.1 c1c2c56
@jsloane jsloane SAKIII-3710 check button tags in wcag unit test 505b92b
@jsloane jsloane SAKIII-3710 added title attribute to buttons e7347e0
@jsloane jsloane Merge branch 'v1.1' of github.com:sakaiproject/3akai-ux into SAKIII-3710
* 'v1.1' of github.com:sakaiproject/3akai-ux:
  NOJIRA - Fixing some wording and counts
  SAKIII-3816 - Area Permissions interface for pages within area does not show complete interface
  SAKIII-3819 Check for an empty object in the directory parsing
  SAKIII-3595 Search by tag for people, content, and worlds
  SAKIII-3691 Only retrieve sakaidocs when adding an existing document as an area to a world
  SAKIII-3813 no more sakai:custom-mimetype
  SAKIII-3685 focus on contentcomments textarea
  SAKIII-3806 Add #l=library to the group serach result
  SAKIII-3690 This issue is largely being caused by too many things being squished on the line, and so at certain font sizes/zoomlevels, the Clear label is droppping down when it hits the floated right Combo box. To balance this, I am dropping the Search box down to 150px from 200px, which still seems large enough (and about the same size as the one on the top navigation), and keeps everything on the same line unless you zoom the browser font really really small.
  SAKIII-3095 making profile required field error messages configurable
  SAKIII-3093 add aria-live attribute to dynamic pages
023363d
@jsloane jsloane SAKIII-3710 adding link title to wcag unit test and added title to links f10476f
@jsloane jsloane SAKIII-3840 add title to textareas ece0f27
@gsilver gsilver SAKAIII-3832 8851690
@croby croby Merge branch 'v1.1' of github.com:sakaiproject/3akai-ux into v1.1 90e5140
@croby croby was assigned
jsloane and others added some commits
@jsloane jsloane SAKIII-3710 resolving merge conflict 1c500ae
Nicolaas Matthijs SAKIII-3877 - Going to a category that doesn't exist throws an error …
…and does't fully render the page
d06c6da
@gsilver gsilver SAKIII-3832 - using global s3d aural class for legend aff17fd
@jsloane jsloane SAKIII-3710 resolving merge conflicts dca18f0
@croby croby Merge branch 'v1.1' of github.com:sakaiproject/3akai-ux into v1.1 75a03af
@croby croby Merge branch 'master' of github.com:sakaiproject/3akai-ux into v1.1
Conflicts:
	devwidgets/contentmetadata/javascript/contentmetadata.js
	devwidgets/lhnavigation/lhnavigation.html
6ce4ea8
@croby croby Merge branch 'v1.0.1' of github.com:sakaiproject/3akai-ux into v1.1
Conflicts:
	devwidgets/contentmetadata/javascript/contentmetadata.js
7d4e22f
@croby croby Merge branch 'SAKIII-3887' of git://github.com/croby/3akai-ux into cr…
…oby-SAKIII-3887
f42161f
@croby croby SAKIII-3887 Also handle the case where there is no l param in the URL 9cbe480
@croby croby Merge branch 'v1.0.1' of github.com:sakaiproject/3akai-ux into v1.1 33f46c8
Bert Pareyn SAKIII-3988 Implement design for counts in the left hand navigation a5360f3
Bert Pareyn SAKIII-3689 Server URL should be cut off if it is too long for the Cr…
…eate new world screen
4628470
@jsloane jsloane SAKIII-3710 resolving merge conflicts 786afae
@marktriggs marktriggs NOJIRA Fix issue where the user's name would be occasionally truncate…
…d to the first letter.

Every so often, the span.ellipsis_text element passed to ThreeDots has a height of zero.  This causes the 'num_rows' function of jquery.threedots.js to return NaN for the element, which in turn causes the 'the_bisector' function to incorrectly truncate the string.
6ba08c4
@jsloane jsloane SAKIII-3917 fixing profile pictures in addpeople widget 6289651
Bert Pareyn SAKIII-3494 Alt Text flashes when removing a person from your contacts 67002a9
Bert Pareyn SAKIII-3786 Remove version control for links d213457
Bert Pareyn Merge remote branch 'origin/v1.1' into v1.1SAKIII-3689 78ac3be
Bert Pareyn SAKIII-3689 Extend threedots API to be able to threedot a string in t…
…he middle and apply to suggested url in create group screen
500bbea
Bert Pareyn Merge remote branch 'origin/v1.1' into v1.1SAKIII-3988 d18df4f
Nicolaas Matthijs SAKIII-3981 - Pass on redirect parameter to SSO login page 71a7d32
Nicolaas Matthijs Merge branch 'v1.0.1' into v11merge
* v1.0.1:
  SAKIII-3906 Updating icon to say Sakai 2 Tool rather than Remote Content since its not a straight BLTI widget.
7671223
@marktriggs marktriggs Try up to 10 times to apply ThreeDots before giving up if the element…
… still has a height of zero.
79b4734
Bert Pareyn SAKIII-3988 Fixes for counts in the left hand nav 851ea23
Nicolaas Matthijs SAKIII-4003 - Math courses have different ACLs compared to Math template acfdc70
Nicolaas Matthijs Merge branch 'v1.1SAKIII-3689' of git://github.com/bp323/3akai-ux int…
…o SAKIII-3689

* 'v1.1SAKIII-3689' of git://github.com/bp323/3akai-ux:
  SAKIII-3689 Extend threedots API to be able to threedot a string in the middle and apply to suggested url in create group screen
  SAKIII-3689 Server URL should be cut off if it is too long for the Create new world screen
83b6c91
Nicolaas Matthijs Merge branch 'v1.1SAKIII-3988' of git://github.com/bp323/3akai-ux int…
…o v1.1SAKIII-3988

* 'v1.1SAKIII-3988' of git://github.com/bp323/3akai-ux:
  SAKIII-3988 Fixes for counts in the left hand nav
  SAKIII-3988 Implement design for counts in the left hand navigation
e7f7f74
Nicolaas Matthijs SAKIII-3988 - Implement design for counts in the left hand navigation bcd3f40
Nicolaas Matthijs Merge branch 'SAKAIII-3832' of git://github.com/gsilver/3akai-ux into…
… SAKAIII-3832

* 'SAKAIII-3832' of git://github.com/gsilver/3akai-ux:
  SAKIII-3832 - using global s3d aural class for legend
  SAKAIII-3832

Conflicts:
	devwidgets/carousel/carousel.html
23c4b35
@jsloane jsloane SAKIII-3710 resolve merge conflicts 5bbb11d
@jsloane jsloane SAKIII-3710 adjust wcag unit test 45ea4ec
@jsloane jsloane SAKIII-3710 removing unneccessary title attributes 5d68fc3
@jsloane jsloane SAKIII-3710 removing unneccessary title attributes 9b9bc58
@jsloane jsloane SAKIII-3710 removing unneccessary title attributes c598e11
@croby croby commented on the diff
dev/s23/s23_site.html
@@ -89,7 +89,7 @@
{/if}
{for tool in col}
<div class="s23_site_iframe_title">
- <a class="s23_site_iframe_title_reset" title="Reset" target="Main${tool.xid}" id="reset-Main${tool.xid}" href="${sakai.config.SakaiDomain}/portal/tool-reset/${tool.url}?panel=Main"><span>Reset</span></a><h2>${tool.title}</h2>
+ <a class="s23_site_iframe_title_reset" title="__MSG__RESET__" target="Main${tool.xid}" id="reset-Main${tool.xid}" href="${sakai.config.SakaiDomain}/portal/tool-reset/${tool.url}?panel=Main"><span>__MSG__RESET__</span></a><h2>${tool.title}</h2>
@croby
croby added a note

We can remove this title - the span inside of it has the same text

@jsloane
jsloane added a note

The span actually has "text-indent:-999em;" in the css, so the text isn't shown to the user. This already had the title attribute, I just changed it to an i18n string.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/addtocontacts/addtocontacts.html
@@ -31,7 +31,7 @@
</tr>
</table>
<label id="addtocontacts_form_personalnote_label" for="addtocontacts_form_personalnote">__MSG__ADD_A_PERSONAL_NOTE_TO_THE_INVITATION__:</label>
- <textarea cols="75" rows="3" id="addtocontacts_form_personalnote" name="addtocontacts_form_personalnote"></textarea>
+ <textarea cols="75" rows="3" id="addtocontacts_form_personalnote" name="addtocontacts_form_personalnote" title="__MSG__ENTER_A_PERSONAL_NOTE_FOR_THE_INVITATION__"></textarea>
@croby
croby added a note

Let's use the placeholder attribute here instead of title

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/carousel/carousel.html
@@ -103,29 +103,29 @@
{for user in item.suggestions}
<div>
{if user.picture}
- <img src="/~${user.userid|safeURL}/public/profile/${user.picture.name}" />
+ <img src="/~${user.userid|safeURL}/public/profile/${user.picture.name}" alt="__MSG__PROFILE_PICTURE__"/>
@croby
croby added a note

This isn't very informative to a non-visual user. Can we maybe include the user's displayname in the alt?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/carousel/carousel.html
((6 lines not shown))
{else}
- <img src="/dev/images/default_User_icon_50x50.png" />
+ <img src="/dev/images/default_User_icon_50x50.png" alt="__MSG__PROFILE_PICTURE__"/>
@croby
croby added a note

Same as above - maybe something about a default image?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/carousel/carousel.html
@@ -136,9 +136,9 @@
{var tall = group_index < 2}
<div class="carousel_4x2_{if tall}tall{else}short{/if}">
{if group.picture}
- <img src="${group.picture}" />
+ <img src="${group.picture}" alt="__MSG__PROFILE_PICTURE__"/>
@croby
croby added a note

Same as above about making the alt here more descriptive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/carousel/carousel.html
((6 lines not shown))
{else}
- <img src="/dev/images/group_avatar_icon_64x64_nob.png" />
+ <img src="/dev/images/group_avatar_icon_64x64_nob.png" alt="__MSG__PROFILE_PICTURE__"/>
@croby
croby added a note

See above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/categories/categories.html
@@ -44,16 +44,16 @@
{if thumbnail}
<img src="${thumbnail}" class="categories_item_content_preview" alt="${item.content["sakai:pooled-content-file-name"]|safeOutput}"/>
{else}
- <img src="${sakai.api.Content.getMimeTypeData(sakai.api.Content.getMimeType(item.content)).URL}" class="categories_item_content_preview"/>
+ <img src="${sakai.api.Content.getMimeTypeData(sakai.api.Content.getMimeType(item.content)).URL}" class="categories_item_content_preview" alt="${item.content["sakai:pooled-content-file-name"]}"/>
@croby
croby added a note

This alt is misleading -- it should probably include the mimeType description instead of the file name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/comments/comments.html
@@ -93,7 +93,7 @@
<input type="text" class="comments_inputFields" id="comments_txtMailPoster"><br />
</div>
<label for="comments_txtMessage">__MSG__YOUR_COMMENT__:</label>
- <textarea id="comments_txtMessage" class="comments_inputFields" rows="7" cols="50"></textarea><br />
+ <textarea id="comments_txtMessage" class="comments_inputFields" rows="7" cols="50" title="__MSG__ENTER_YOUR_COMMENT__"></textarea><br />
@croby
croby added a note

Let's use the placeholder attribute here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/contacts/contacts.html
@@ -27,19 +27,19 @@
{var count = count + 1}
<div class="fl-container fl-fix contacts_item{if count == 1} contacts_item_first{/if}">
<div class="contacts_item_left_filler"></div>
- <a href="/~${p.profile.userid|safeURL}"><img alt="pending icon" src="${sakai.api.Util.constructProfilePicture(p.profile)}"></a>
+ <a href="/~${p.profile.userid|safeURL}" title="__MSG__VIEW__ ${sakai.api.User.getDisplayName(p.profile)}"><img alt="__MSG__PROFILE_PICTURE__" src="${sakai.api.Util.constructProfilePicture(p.profile)}"></a>
@croby
croby added a note

This would say View Chris Roby, but since you're not viewing me, maybe it should be View Chris Roby's Profile instead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/contacts/contacts.html
@@ -75,19 +75,19 @@
<input type="checkbox" name="checkbox_${i.profile.userid}" style="display:none"/>
</div>
<button title="__MSG__SEND_MESSAGE__" class="s3d-link-button contacts_item_message_icon sakai_sendmessage_overlay" data-sakai-entityid="${i.profile.userid}" data-sakai-entityname="${sakai.api.User.getDisplayName(i.profile)}" data-sakai-entitytype="user"></button>
- <a href="/~${i.profile.userid|safeURL}"><img alt="pending icon" src="${sakai.api.Util.constructProfilePicture(i.profile)}"></a>
+ <a href="/~${i.profile.userid|safeURL}" title="__MSG__VIEW__ ${sakai.api.User.getDisplayName(i.profile)}"><img alt="__MSG__PROFILE_PICTURE__" src="${sakai.api.Util.constructProfilePicture(i.profile)}"></a>
@croby
croby added a note

Same comment as above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/contacts/contacts.html
@@ -132,7 +132,7 @@
</div>
<button title="__MSG__SEND_MESSAGE__" class="s3d-link-button contacts_item_message_icon sakai_sendmessage_overlay" data-sakai-entityid="${a.profile.userid}" data-sakai-entityname="${sakai.api.User.getDisplayName(a.profile)}" data-sakai-entitytype="user"></button>
{if !sakai.data.me.user.anon && sakai_global.profile.main.mode.value !== "view"}
- <button type="button" class="s3d-link-button s3d-action-icon s3d-actions-delete" data-sakai-entityid="${a.profile.userid}" data-sakai-entityname="${sakai.api.User.getDisplayName(a.profile)}"></button>
+ <button title="__MSG__REMOVE_CONTACT__ ${sakai.api.User.getDisplayName(a.profile)}" type="button" class="s3d-link-button s3d-action-icon s3d-actions-delete" data-sakai-entityid="${a.profile.userid}" data-sakai-entityname="${sakai.api.User.getDisplayName(a.profile)}"></button>
@croby
croby added a note

What does this title translate to? Remove contact Chris Roby?

@jsloane
jsloane added a note

Yep

@croby
croby added a note

Let's change that to 'Remove Chris Roby as a Contact' to make it more sentence-like.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/contacts/contacts.html
@@ -141,19 +141,19 @@
<div class="left_filler"><img src="/dev/images/accept.png" alt="__MSG__USER_IS_A_CONTACT__" /></div>
{/if}
{/if}
- <a href="/~${a.profile.userid|safeURL}"><img alt="accepted icon" src="${sakai.api.Util.constructProfilePicture(a.profile)}"></a>
+ <a href="/~${a.profile.userid|safeURL}" title="__MSG__VIEW__ ${sakai.api.User.getDisplayName(a.profile)}"><img alt="__MSG__PROFILE_PICTURE__" src="${sakai.api.Util.constructProfilePicture(a.profile)}"></a>
@croby
croby added a note

Same comments as above for this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/contentcomments/contentcomments.html
@@ -16,7 +16,7 @@
<div id="contentcomments_fillInComment">
<div class="contentcomments_fillInCommentTopContainer">
<br />
- <textarea id="contentcomments_txtMessage" class="contentcomments_inputFields" cols="20"></textarea>
+ <textarea id="contentcomments_txtMessage" class="contentcomments_inputFields" cols="20" title="__MSG__ENTER_A_COMMENT__"></textarea>
@croby
croby added a note

Let's use the placeholder attribute here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/contentmetadata/contentmetadata.html
@@ -127,7 +127,7 @@
<div class="contentmetadata_content_row">
<span class="contentmetadata_first_column">__MSG__CREATED_BY__: </span>
<span>
- <a href="${creator.homePath}" class="s3d-regular-links">
+ <a href="${creator.homePath}" class="s3d-regular-links" title="__MSG__VIEW__ ${sakai.api.User.getDisplayName(creator)}'s __MSG__PROFILE__">
@croby
croby added a note

This possessive isn't internationalized -- not all languages use 's as their possessive. I'd suggest moving this whole thing into a new i18n key, as we've done in other places, to allow for more customized possessives

@croby
croby added a note

Still need to make this change

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/contentpermissions/contentpermissions.html
@@ -19,7 +19,7 @@
<label class="s3d-bold">__MSG__CAN_SEE_OR_EDIT__</label>
<input id="contentpermissions_members_autosuggest"/>
<div id="contentpermissions_members_message_container" style="display:none;">
- <textarea id="contentpermissions_members_message"></textarea>
+ <textarea id="contentpermissions_members_message" title="__MSG__ENTER_A_MESSAGE__"></textarea>
@croby
croby added a note

As above, use placeholder here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/creategroup/creategroup.html
@@ -30,7 +30,7 @@
<div id="creategroup_add_id_short" class="creategroup_error_msg">__MSG__GROUP_URL_SHORT__</div>
<label for="creategroup_add_description" class="description_fields">__MSG__DESCRIPTION__:</label>
- <textarea id="creategroup_add_description" rows="1" cols="10" class="description_fields"></textarea>
+ <textarea id="creategroup_add_description" rows="1" cols="10" class="description_fields" title="__MSG__ENTER_A_DESCRIPTION__"></textarea>
@croby
croby added a note

placeholder again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/discussion/discussion.html
((6 lines not shown))
{/if}
<label for="discussion_topic_reply_text" class="s3d-bold">
__MSG__MESSAGE_TEXT__
</label>
- <textarea id="discussion_topic_reply_text" class="required" rows="6" name="message_text">{if edit == true}${body}{/if}</textarea>
+ <textarea id="discussion_topic_reply_text" class="required" rows="6" name="message_text" title="{if edit == true}__MSG__EDIT_YOUR_MESSAGE__{else}__MSG__ENTER_YOUR_MESSAGE__{/if}">{if edit == true}${body}{/if}</textarea>
@croby
croby added a note

We probably don't need this if here since both clauses are the same result.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/discussion/discussion.html
@@ -19,7 +19,7 @@
<label for="discussion_create_new_topic_message_text" class="s3d-bold">
__MSG__MESSAGE_TEXT__
</label>
- <textarea id="discussion_create_new_topic_message_text" class="required" rows="6" name="Message Text"></textarea>
+ <textarea id="discussion_create_new_topic_message_text" class="required" rows="6" name="Message Text" title="__MSG__ENTER_YOUR_MESSAGE__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/embedcontent/embedcontent.html
@@ -35,17 +35,17 @@
{var thumbnail = sakai.api.Content.getThumbnail(item.fullresult)}
{if embedmethod === "thumbnail" && thumbnail}
{var mimeTypeDescription = sakai.config.MimeTypes[mimeType].description}
- <a href="/content#p=${item.link}">
+ <a href="/content#p=${item.link|urlSafe}" title="${item.name}">
@croby
croby added a note

should be safeURL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/entity/entity.html
@@ -210,7 +210,7 @@
{if type && type == "group_managed"}
<div id="entity_group_image">
<div class="entity_profilepic_internal">
- <img id="entity_profile_picture" src="{if data.authprofile.picture}${data.authprofile.picture}{else}/devwidgets/entity/images/entity_default_group.png{/if}"/>
+ <img id="entity_profile_picture" alt="__MSG__GROUP_PICTURE_FOR__ ${data.authprofile["sakai:group-title"]}" src="{if data.authprofile.picture}${data.authprofile.picture}{else}/devwidgets/entity/images/entity_default_group.png{/if}"/>
@croby
croby added a note

need to |safeOutput this group-title

@croby
croby added a note

still need to fix this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/entity/entity.html
@@ -225,7 +225,7 @@
{else}
<div id="entity_group_image" class="entity_other_profilepic">
<div class="entity_profilepic_internal">
- <img id="entity_profile_picture" src="{if data.authprofile.picture}${data.authprofile.picture}{else}/devwidgets/entity/images/entity_default_group.png{/if}"/>
+ <img id="entity_profile_picture" alt="__MSG__GROUP_PICTURE_FOR__ ${data.authprofile["sakai:group-title"]}" src="{if data.authprofile.picture}${data.authprofile.picture}{else}/devwidgets/entity/images/entity_default_group.png{/if}"/>
@croby
croby added a note

need to |safeOutput this group-title

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/entity/entity.html
@@ -150,7 +150,7 @@
{if data.isManager}
<div id="entity_managed_content"></div>
{/if}
- <img src="${data.data['iconURL']}"/>
+ <img src="${data.data['iconURL']}" alt="${data.data["sakai:pooled-content-file-name"]}"/>
@croby
croby added a note

need to |safeOutput this pooled-content-file-name

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/allcategories/allcategories.html
@@ -27,15 +27,15 @@
{if thumbnail}
<img src="${thumbnail}" class="allcategories_item_content_preview" alt="${item.content["sakai:pooled-content-file-name"]|safeOutput}"/>
{else}
- <img src="${sakai.api.Content.getMimeTypeData(item.content["_mimeType"]).URL}" class="allcategories_item_content_preview"/>
+ <img src="${sakai.api.Content.getMimeTypeData(item.content["_mimeType"]).URL}" class="allcategories_item_content_preview" alt="${item.content["sakai:pooled-content-file-name"]}"/>
@croby
croby added a note

need to |safeOutput this pooled-content-file-name

@croby
croby added a note

Still need to make this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
dev/acknowledgements.html
@@ -48,7 +48,7 @@
</div>
<div class="acknowledgement_information">
<h1>__MSG__JQUERY_AND_JQUERY_UI__</h1>
- <a href="http://www.jquery.com">www.jquery.com</a> <br /><br />
+ <a href="http://www.jquery.com" title="__MSG__JQUERY_AND_JQUERY_UI__">www.jquery.com</a> <br /><br />
@croby
croby added a note

We shouldn't need these titles in this file at all, as the contents of the a tag are the url that the user goes to

@croby
croby added a note

Still need to fix all the titles in this file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/featuredcontent/featuredcontent.html
@@ -147,13 +147,13 @@
<div class="s3d-action-icon s3d-actions-author personinfo_trigger_click featuredcontent_content_actions_authorinfo" data-userid="${small["sakai:pool-content-created-for"]}"></div>
</div>
{if small.image}
- <img src="/p/${small["_path"]}" class="featuredcontent_thumbnail_image"/>
+ <img src="/p/${small["_path"]}" class="featuredcontent_thumbnail_image" alt="${small["sakai:pooled-content-file-name"]}"/>
@croby
croby added a note

need to |safeOutput this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/featuredcontent/featuredcontent.html
((9 lines not shown))
{/if}
<a href="/content#p=${small["_path"]|safeURL}/${small["sakai:pooled-content-file-name"]|safeURL}" title="${small["sakai:pooled-content-file-name"]|safeOutput}" class="s3d-bold s3d-regular-links featuredcontent_content_title">${sakai.api.Util.applyThreeDots(small["sakai:pooled-content-file-name"], 76)}</a>
<span class="featuredcontent_content_category_description"><span class="featuredcontent_content_usedin_icon featuredcontent_content_icon"></span>__MSG__USED_IN__ ${small.usedin} {if small.usedin == 1} __MSG__PLACE__{else} __MSG__PLACES__{/if}</span>
- {if small.commentcount}<span class="featuredcontent_content_category_description"><span class="featuredcontent_content_comments_icon featuredcontent_content_icon"></span><a href="/content#p=${small["_path"]|safeURL}/${small["sakai:pooled-content-file-name"]|safeURL}" title="${small.commentcount} {if small.commentcount == 1} __MSG__COMMENT__{else} __MSG__COMMENTS__{/if}" class="s3d-bold s3d-regular-links">${small.commentcount} {if small.commentcount == 1} __MSG__COMMENT__{else} __MSG__COMMENTS__{/if}</a></span>{/if}
+ {if small.commentcount}<span class="featuredcontent_content_category_description"><span class="featuredcontent_content_comments_icon featuredcontent_content_icon"></span><a href="/content#p=${small["_path"]|safeURL}/${small["sakai:pooled-content-file-name"]|safeURL}" class="s3d-bold s3d-regular-links">${small.commentcount} {if small.commentcount == 1} __MSG__COMMENT__{else} __MSG__COMMENTS__{/if}</a></span>{/if}
@croby
croby added a note

need to |safeOutput this

@jsloane
jsloane added a note

This line uses safeURL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/featuredworlds/featuredworlds.html
@@ -27,10 +27,14 @@
{if data[tab.id].total}
{for item in data[tab.id].results}
<div class="featuredworlds_content">
- <img src="/dev/images/group_avatar_icon_64x64_nob.png" class="featuredworlds_image"/>
- <a href="/~${item["sakai:group-id"]}" class="s3d-bold s3d-regular-links">${item["sakai:group-title"]|safeOutput}</a>
- <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=library" class="s3d-regular-links fl-push featuredworlds_grouppage_link">{if item.counts.contentCount} ${item.counts.contentCount} {if item.counts.contentCount != 1} __MSG__CONTENT_ITEMS__{else} __MSG__CONTENT_ITEM__{/if} {else} 0 __MSG__CONTENT_ITEMS__ {/if}</a>
- <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=memberships" class="s3d-regular-links fl-push featuredworlds_grouppage_link">${item.counts.membersCount} {if item.counts.membersCount != 1} __MSG__PARTICIPANTS__{else} __MSG__PARTICIPANT__{/if}</a>
+ <img src="/dev/images/group_avatar_icon_64x64_nob.png" class="featuredworlds_image" alt="${item["sakai:group-title"]|safeOutput}/>
+ <a href="/~${item["sakai:group-id"]}" class="s3d-bold s3d-regular-links" title="${item["sakai:group-title"]|safeOutput}">${item["sakai:group-title"]|safeOutput}</a>
+ <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=library" class="s3d-regular-links fl-push featuredworlds_grouppage_link" title="{if item.counts.contentCount} ${item.counts.contentCount} {if item.counts.contentCount != 1} __MSG__CONTENT_ITEMS__{else} __MSG__CONTENT_ITEM__{/if} {else} 0 __MSG__CONTENT_ITEMS__ {/if}">
@croby
croby added a note

We should do this calculation only once - store it in a variable, and display it in both places.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/featuredworlds/featuredworlds.html
@@ -27,10 +27,14 @@
{if data[tab.id].total}
{for item in data[tab.id].results}
<div class="featuredworlds_content">
- <img src="/dev/images/group_avatar_icon_64x64_nob.png" class="featuredworlds_image"/>
- <a href="/~${item["sakai:group-id"]}" class="s3d-bold s3d-regular-links">${item["sakai:group-title"]|safeOutput}</a>
- <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=library" class="s3d-regular-links fl-push featuredworlds_grouppage_link">{if item.counts.contentCount} ${item.counts.contentCount} {if item.counts.contentCount != 1} __MSG__CONTENT_ITEMS__{else} __MSG__CONTENT_ITEM__{/if} {else} 0 __MSG__CONTENT_ITEMS__ {/if}</a>
- <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=memberships" class="s3d-regular-links fl-push featuredworlds_grouppage_link">${item.counts.membersCount} {if item.counts.membersCount != 1} __MSG__PARTICIPANTS__{else} __MSG__PARTICIPANT__{/if}</a>
+ <img src="/dev/images/group_avatar_icon_64x64_nob.png" class="featuredworlds_image" alt="${item["sakai:group-title"]|safeOutput}/>
+ <a href="/~${item["sakai:group-id"]}" class="s3d-bold s3d-regular-links" title="${item["sakai:group-title"]|safeOutput}">${item["sakai:group-title"]|safeOutput}</a>
+ <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=library" class="s3d-regular-links fl-push featuredworlds_grouppage_link" title="{if item.counts.contentCount} ${item.counts.contentCount} {if item.counts.contentCount != 1} __MSG__CONTENT_ITEMS__{else} __MSG__CONTENT_ITEM__{/if} {else} 0 __MSG__CONTENT_ITEMS__ {/if}">
+ {if item.counts.contentCount} ${item.counts.contentCount} {if item.counts.contentCount != 1} __MSG__CONTENT_ITEMS__{else} __MSG__CONTENT_ITEM__{/if} {else} 0 __MSG__CONTENT_ITEMS__ {/if}
+ </a>
+ <a href="/dev/group.html?id=${item["sakai:group-id"]}#l=memberships" class="s3d-regular-links fl-push featuredworlds_grouppage_link" title="${item.counts.membersCount} {if item.counts.membersCount != 1} __MSG__PARTICIPANTS__{else} __MSG__PARTICIPANT__{/if}">
@croby
croby added a note

Same here as ^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/listpeopleinnode/listpeopleinnode.html
@@ -37,7 +37,7 @@
<ul>
{for person in results}
<li {if person_index % 2 != 0} class="s3d-list-item s3d-highlight_area_background" {else} class="s3d-list-item" {/if}>
- <a href="/~${person["rep:userId"]|safeURL}" target="_blank" class="s3d-list-link-full-space s3d-action">
+ <a href="/~${person["rep:userId"]|safeURL}" target="_blank" class="s3d-list-link-full-space s3d-action" title="__MSG__PROFILE_PICTURE__">
@croby
croby added a note

Should be consistent with all the other places above here -- something like Chris Roby's Profile Picture

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newaddcontent/newaddcontent.html
@@ -50,7 +50,7 @@
<input placeholder="__MSG__TITLE__" type="text" id="newaddcontent_upload_content_title"/>
<label for="newaddcontent_upload_content_description">__MSG__DESCRIPTION__:</label>
- <textarea placeholder="__MSG__DESCRIPTION_HELPS_FINDABILITY__" id="newaddcontent_upload_content_description"></textarea>
+ <textarea placeholder="__MSG__DESCRIPTION_HELPS_FINDABILITY__" id="newaddcontent_upload_content_description" title="__MSG__ENTER_A_DESCRIPTION__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newaddcontent/newaddcontent.html
@@ -77,7 +77,7 @@
<input type="text" id="newaddcontent_add_document_title"/>
<label for="newaddcontent_add_document_description">__MSG__DESCRIPTION__:</label>
- <textarea id="newaddcontent_add_document_description"></textarea>
+ <textarea id="newaddcontent_add_document_description" title="__MSG__ENTER_A_DESCRIPTION__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newaddcontent/newaddcontent.html
@@ -116,7 +116,7 @@
<input type="text" id="newaddcontent_add_link_title"/>
<label for="newaddcontent_add_link_description">__MSG__DESCRIPTION__:</label>
- <textarea id="newaddcontent_add_link_description"></textarea>
+ <textarea id="newaddcontent_add_link_description" title="__MSG__ENTER_A_DESCRIPTION__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newaddcontent/newaddcontent.html
@@ -157,7 +157,7 @@
<label for="newaddcontent_selecteditems_edit_data_title">__MSG__TITLE__:</label>
<input type="text" id="newaddcontent_selecteditems_edit_data_title" value="${item.title|safeOutput}"/>
<label for="newaddcontent_selecteditems_edit_data_description">__MSG__DESCRIPTION__:</label>
- <textarea id="newaddcontent_selecteditems_edit_data_description">${item.description|safeOutput}</textarea>
+ <textarea id="newaddcontent_selecteditems_edit_data_description" title="__MSG__EDIT_DESCRIPTION__">${item.description|safeOutput}</textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newcreategroup/newcreategroup.html
@@ -22,9 +22,9 @@
<label for="newcreategroup_suggested_url">__MSG__SUGGESTED_URL__:</label>
<span id="newcreategroup_suggested_url_base"></span><input type="text" id="newcreategroup_suggested_url" name="newcreategroup_suggested_url" class="required"/>
<label for="newcreategroup_description">__MSG__DESCRIPTION__:</label>
- <textarea id="newcreategroup_description" name="newcreategroup_description"></textarea>
+ <textarea id="newcreategroup_description" name="newcreategroup_description" title="__MSG__ENTER_A_DESCRIPTION__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newcreategroup/newcreategroup.html
((6 lines not shown))
<label for="newcreategroup_tags">__MSG__TAGS__:</label>
- <textarea id="newcreategroup_tags" name="newcreategroup_tags"></textarea>
+ <textarea id="newcreategroup_tags" name="newcreategroup_tags" title="__MSG__ENTER_TAGS__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newcreategroup/newcreategroup.html
@@ -74,7 +74,7 @@
{/for}
</ul>
</div>
- <textarea id="newcreategroup_members_message"></textarea>
+ <textarea id="newcreategroup_members_message" title="__MSG__ENTER_A_MESSAGE__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/newsharecontent/newsharecontent.html
@@ -28,7 +28,7 @@
<span id="newsharecontent_message_arrow" class="arrow_right"></span><label for="newsharecontent_message" class="toggletext">__MSG__MESSAGE__:</label>
</div>
<div id="newsharecontent_message_container">
- <textarea id="newsharecontent_message" placeholder="Enter message"></textarea>
+ <textarea id="newsharecontent_message" placeholder="__MSG__ENTER_MESSAGE__" title="__MSG__ENTER_MESSAGE__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@croby croby commented on the diff
devwidgets/personinfo/personinfo.html
@@ -23,7 +23,7 @@
<div id="personinfo_template" style="display:none"><!--
<div id="personinfo_user">
<span id="personinfo_user_picture">
- <img src="${user.displayPicture}"/>
+ <img src="${user.displayPicture}" alt="__MSG__PROFILE_PICTURE_FOR__ ${user.displayName}"/>
@croby
croby added a note

Just a note to check for consistency with all the other alts for profile pictures

@croby
croby added a note

Still need to fix this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/pickeradvanced/pickeradvanced.html
@@ -131,7 +131,7 @@
</div>
<div id="pickeradvanced_group_search_template" style="display:none"><!--
- <li><button type="button" id="pickeradvanced_search_groups_${data.groupid}" class="pickeradvanced_search_filter s3d-action s3d-bold s3d-link-button">${data["sakai:group-title"]|safeOutput}</button></li>
+ <li><button type="button" id="pickeradvanced_search_groups_${data.groupid}" class="pickeradvanced_search_filter s3d-action s3d-bold s3d-link-button" title="${data["sakai:group-title"]|safeOutput}">${data["sakai:group-title"]|safeOutput}</button></li>
@croby
croby added a note

Don't need this title as it doubles the contents

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/pickeruser/pickeruser.html
@@ -18,7 +18,7 @@
<div id="pickeruser_send_message" class="fl-force-left s3d-highlight_area_background">
<span class="fl-force-left">__MSG__SEND_PERSONAL_MESSAGE__</span>
<span class="fl-force-left">
- <textarea id="pickeruser_message"></textarea>
+ <textarea id="pickeruser_message" title="__MSG__ENTER_A_MESSAGE__"></textarea>
@croby
croby added a note

placeholder here too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/poll/poll.html
@@ -111,7 +111,7 @@
<div id="poll_options_template"><!--
{for option in poll.options}
<div id="poll_question${option_index}">
- <input type="text" id="poll_question_input${option_index}" value="${option}" /><button type="button" class="poll_close s3d-link-button s3d-bold">x</button>
+ <input type="text" id="poll_question_input${option_index}" value="${option}" /><button type="button" class="poll_close s3d-link-button s3d-bold" title="__MSG__CLOSE__">x</button>
@croby
croby added a note

Should internationalize this x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/recentcontactsnew/recentcontactsnew.html
@@ -17,7 +17,7 @@
<div class="recentcontactsnew_item"></div>
<div id="recentcontactsnew_item_template"><!--
<div class="recentcontactsnew_item_img fl-force-left">
- <a href="#">
+ <a href="#" title="__MSG__PROFILE_PICTURE__">
@croby
croby added a note

Should be consistent with the other titles/alts for profile pictures -- and this img below should probably have an alt instead of this a having a title

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/recentcontactsnew/recentcontactsnew.html
@@ -52,12 +52,12 @@
<div class="recentcontactsnew_item_related_info">
<p class="recentcontactsnew_item_meta_data">${firstName|safeOutput} __MSG__RECENT_CONNECTION__</p>
<div class="fl-force-left">
- <a href="/~${connection.connectionId}">
+ <a href="/~${connection.connectionId}" title="__MSG__PROFILE_PICTURE__>
@croby
croby added a note

Same comment as above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/recentmemberships/recentmemberships.html
@@ -17,7 +17,7 @@
<div class="recentmemberships_item"></div>
<div id="recentmemberships_item_template"><!--
<div class="recentmemberships_item_img fl-force-left">
- <a href="#">
+ <a href="#" title="__MSG__PROFILE_PICTURE__">
@croby
croby added a note

Same as the above comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/recentmemberships/recentmemberships.html
@@ -48,12 +48,12 @@
<div class="recentmemberships_item_related_info">
<p class="recentmemberships_item_meta_data">__MSG__RECENTLY_CONNECTED_TO__ <span>${group["sakai:group-title"]}</span></p>
<div class="fl-force-left">
- <a href="/~${member.memberId}">
+ <a href="/~${member.memberId}" title="__MSG__PROFILE_PICTURE__">
@croby
croby added a note

Same as the above comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/recentmemberships/recentmemberships.html
@@ -80,7 +80,7 @@
</a>
</div>
<div class="recentmemberships_item_div">
- <a class="recentmemberships_item_link s3d-widget-links s3d-bold" href="/content#p=${content['_path']}/${content.name}" title="${content.name}">
+ <a class="recentmemberships_item_link s3d-widget-links s3d-bold" href="/content#p=${content['_path']|urlSafe}/${content.name|urlSafe}">
@croby
croby added a note

should be safeURL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
devwidgets/sakaidocs/sakaidocs.html
@@ -66,12 +66,12 @@
<div class="edit_contents_main">
<div id="fl-tab-content-editor">
<div id="placeholderforeditor" class="textarea">
- <textarea id="elm1" name="elm1" style="width: 100%; height:430px"></textarea>
+ <textarea id="elm1" name="elm1" style="width: 100%; height:430px" title="__MSG__EDITOR__"></textarea>
@croby
croby added a note

Can remove this title -- this textarea gets replaced by tinymce

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
croby and others added some commits
@croby croby SAKIII-3985 Add pagination to the participants widget
* Adds in data caching for group/role functions in sakai.api.groups.js to prevent massive amounts of requests from firing
* Added A-Z and Z-A sorting for the participants widget (was in the NYU fork of it, so I figured it could be useful)
ec7905c
@croby croby SAKIII-3985 Fix the items parameter 520a934
Nicolaas Matthijs Merge branch 'master' into SAKIII-3981
* master:
  updating version number to 1.1-SNAPSHOT
  changing version number for release
  SAKIII-3987 Cannot add a page from the SakaiDoc profile page
  KERN-2151 change hardcoded localhosts to relative urls
44b2ac1
Nicolaas Matthijs SAKIII-3981 - Pass on redirect parameter to SSO login page dde5557
unknown SAKIII-3710 changes per code review 1c0d163
@jsloane jsloane SAKIII-3710 changes per code review 4559404
@jsloane jsloane SAKIII-3710 change to wcag unit test 093da9e
@jsloane jsloane Merge branch 'SAKIII-3710' of github.com:jsloane/3akai-ux into SAKIII…
…-3710

* 'SAKIII-3710' of github.com:jsloane/3akai-ux:
  SAKIII-3710 changes per code review
7cf9775
Nicolaas Matthijs Merge branch 'SAKIII-3963' of git://github.com/croby/3akai-ux into SA…
…KIII-3963

* 'SAKIII-3963' of git://github.com/croby/3akai-ux:
  SAKIII-3963 Some cleanup
  SAKIII-3963 Check for a pre-parsed picture in constructProfilePicture
7172295
Nicolaas Matthijs Merge branch 'truncation-fix' of git://github.com/marktriggs/3akai-ux…
… into truncation-fix

* 'truncation-fix' of git://github.com/marktriggs/3akai-ux:
  Try up to 10 times to apply ThreeDots before giving up if the element still has a height of zero.
  NOJIRA Fix issue where the user's name would be occasionally truncated to the first letter.
8529700
Nicolaas Matthijs Merge branch 'SAKIII-3985' of git://github.com/croby/3akai-ux into SA…
…KIII-3985

* 'SAKIII-3985' of git://github.com/croby/3akai-ux:
  SAKIII-3985 Fix the items parameter
  SAKIII-3985 Add pagination to the participants widget
456b640
Nicolaas Matthijs SAKIII-3985 - Add pagination to the participants widget 5ec4ae7
@jsloane jsloane SAKIII-3710 resolve merge conflicts b3005ed
@jsloane jsloane SAKIII-3710 fix remaining wcag unit test failures b4820c0
@jsloane

New pull request for master #1118

@jsloane jsloane closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Aug 8, 2011
  1. @jsloane
  2. @jsloane
  3. @croby
  4. @jsloane
Commits on Aug 9, 2011
  1. @jsloane
Commits on Aug 10, 2011
  1. @jsloane

    Merge branch 'v1.1' of github.com:sakaiproject/3akai-ux into SAKIII-3710

    jsloane authored
    * 'v1.1' of github.com:sakaiproject/3akai-ux:
      NOJIRA - Fixing some wording and counts
      SAKIII-3816 - Area Permissions interface for pages within area does not show complete interface
      SAKIII-3819 Check for an empty object in the directory parsing
      SAKIII-3595 Search by tag for people, content, and worlds
      SAKIII-3691 Only retrieve sakaidocs when adding an existing document as an area to a world
      SAKIII-3813 no more sakai:custom-mimetype
      SAKIII-3685 focus on contentcomments textarea
      SAKIII-3806 Add #l=library to the group serach result
      SAKIII-3690 This issue is largely being caused by too many things being squished on the line, and so at certain font sizes/zoomlevels, the Clear label is droppping down when it hits the floated right Combo box. To balance this, I am dropping the Search box down to 150px from 200px, which still seems large enough (and about the same size as the one on the top navigation), and keeps everything on the same line unless you zoom the browser font really really small.
      SAKIII-3095 making profile required field error messages configurable
      SAKIII-3093 add aria-live attribute to dynamic pages
Commits on Aug 11, 2011
  1. @jsloane
Commits on Aug 12, 2011
  1. @jsloane
  2. @gsilver

    SAKAIII-3832

    gsilver authored
Commits on Aug 16, 2011
  1. @croby
Commits on Aug 17, 2011
  1. @jsloane
  2. @croby

    SAKIII-3877 - Going to a category that doesn't exist throws an error …

    Nicolaas Matthijs authored croby committed
    …and does't fully render the page
Commits on Aug 18, 2011
  1. @gsilver
  2. @jsloane
Commits on Aug 31, 2011
  1. @croby
  2. @croby

    Merge branch 'master' of github.com:sakaiproject/3akai-ux into v1.1

    croby authored
    Conflicts:
    	devwidgets/contentmetadata/javascript/contentmetadata.js
    	devwidgets/lhnavigation/lhnavigation.html
  3. @croby

    Merge branch 'v1.0.1' of github.com:sakaiproject/3akai-ux into v1.1

    croby authored
    Conflicts:
    	devwidgets/contentmetadata/javascript/contentmetadata.js
  4. @croby
  5. @croby
  6. @croby
Commits on Sep 1, 2011
  1. SAKIII-3689 Server URL should be cut off if it is too long for the Cr…

    Bert Pareyn authored
    …eate new world screen
Commits on Sep 2, 2011
  1. @jsloane
  2. @marktriggs

    NOJIRA Fix issue where the user's name would be occasionally truncate…

    marktriggs authored
    …d to the first letter.
    
    Every so often, the span.ellipsis_text element passed to ThreeDots has a height of zero.  This causes the 'num_rows' function of jquery.threedots.js to return NaN for the element, which in turn causes the 'the_bisector' function to incorrectly truncate the string.
Commits on Sep 3, 2011
  1. @jsloane @croby

    SAKIII-3917 fixing profile pictures in addpeople widget

    jsloane authored croby committed
  2. @croby

    SAKIII-3494 Alt Text flashes when removing a person from your contacts

    Bert Pareyn authored croby committed
  3. @croby

    SAKIII-3786 Remove version control for links

    Bert Pareyn authored croby committed
Commits on Sep 5, 2011
  1. SAKIII-3689 Extend threedots API to be able to threedot a string in t…

    Bert Pareyn authored
    …he middle and apply to suggested url in create group screen
  2. SAKIII-3981 - Pass on redirect parameter to SSO login page

    Nicolaas Matthijs authored
  3. Merge branch 'v1.0.1' into v11merge

    Nicolaas Matthijs authored
    * v1.0.1:
      SAKIII-3906 Updating icon to say Sakai 2 Tool rather than Remote Content since its not a straight BLTI widget.
Commits on Sep 6, 2011
  1. @marktriggs

    Try up to 10 times to apply ThreeDots before giving up if the element…

    marktriggs authored
    … still has a height of zero.
  2. SAKIII-3988 Fixes for counts in the left hand nav

    Bert Pareyn authored
  3. Merge branch 'v1.1SAKIII-3689' of git://github.com/bp323/3akai-ux int…

    Nicolaas Matthijs authored
    …o SAKIII-3689
    
    * 'v1.1SAKIII-3689' of git://github.com/bp323/3akai-ux:
      SAKIII-3689 Extend threedots API to be able to threedot a string in the middle and apply to suggested url in create group screen
      SAKIII-3689 Server URL should be cut off if it is too long for the Create new world screen
  4. Merge branch 'v1.1SAKIII-3988' of git://github.com/bp323/3akai-ux int…

    Nicolaas Matthijs authored
    …o v1.1SAKIII-3988
    
    * 'v1.1SAKIII-3988' of git://github.com/bp323/3akai-ux:
      SAKIII-3988 Fixes for counts in the left hand nav
      SAKIII-3988 Implement design for counts in the left hand navigation
Commits on Sep 7, 2011
  1. Merge branch 'SAKAIII-3832' of git://github.com/gsilver/3akai-ux into…

    Nicolaas Matthijs authored
    … SAKAIII-3832
    
    * 'SAKAIII-3832' of git://github.com/gsilver/3akai-ux:
      SAKIII-3832 - using global s3d aural class for legend
      SAKAIII-3832
    
    Conflicts:
    	devwidgets/carousel/carousel.html
Commits on Sep 8, 2011
  1. @jsloane
  2. @jsloane
  3. @jsloane
  4. @jsloane
  5. @jsloane
Commits on Sep 12, 2011
  1. @croby

    SAKIII-3985 Add pagination to the participants widget

    croby authored
    * Adds in data caching for group/role functions in sakai.api.groups.js to prevent massive amounts of requests from firing
    * Added A-Z and Z-A sorting for the participants widget (was in the NYU fork of it, so I figured it could be useful)
  2. @croby
Commits on Sep 13, 2011
  1. Merge branch 'master' into SAKIII-3981

    Nicolaas Matthijs authored
    * master:
      updating version number to 1.1-SNAPSHOT
      changing version number for release
      SAKIII-3987 Cannot add a page from the SakaiDoc profile page
      KERN-2151 change hardcoded localhosts to relative urls
  2. SAKIII-3981 - Pass on redirect parameter to SSO login page

    Nicolaas Matthijs authored
Commits on Sep 15, 2011
  1. SAKIII-3710 changes per code review

    unknown authored
  2. @jsloane
  3. @jsloane
  4. @jsloane

    Merge branch 'SAKIII-3710' of github.com:jsloane/3akai-ux into SAKIII…

    jsloane authored
    …-3710
    
    * 'SAKIII-3710' of github.com:jsloane/3akai-ux:
      SAKIII-3710 changes per code review
  5. Merge branch 'SAKIII-3963' of git://github.com/croby/3akai-ux into SA…

    Nicolaas Matthijs authored
    …KIII-3963
    
    * 'SAKIII-3963' of git://github.com/croby/3akai-ux:
      SAKIII-3963 Some cleanup
      SAKIII-3963 Check for a pre-parsed picture in constructProfilePicture
  6. Merge branch 'truncation-fix' of git://github.com/marktriggs/3akai-ux…

    Nicolaas Matthijs authored
    … into truncation-fix
    
    * 'truncation-fix' of git://github.com/marktriggs/3akai-ux:
      Try up to 10 times to apply ThreeDots before giving up if the element still has a height of zero.
      NOJIRA Fix issue where the user's name would be occasionally truncated to the first letter.
  7. Merge branch 'SAKIII-3985' of git://github.com/croby/3akai-ux into SA…

    Nicolaas Matthijs authored
    …KIII-3985
    
    * 'SAKIII-3985' of git://github.com/croby/3akai-ux:
      SAKIII-3985 Fix the items parameter
      SAKIII-3985 Add pagination to the participants widget
  8. SAKIII-3985 - Add pagination to the participants widget

    Nicolaas Matthijs authored
  9. @jsloane
Commits on Sep 16, 2011
  1. @jsloane
This page is out of date. Refresh to see the latest.
Showing with 620 additions and 378 deletions.
  1. BIN  PSD/all_icons.psd
  2. +4 −4 dev/acknowledgements.html
  3. +3 −3 dev/admin/widgets.html
  4. +11 −0 dev/bundle/default.properties
  5. +1 −1  dev/configuration/config.js
  6. +1 −1  dev/group.html
  7. BIN  dev/images/lefthandnav_count.png
  8. BIN  dev/images/lefthandnav_count_hover.png
  9. +12 −1 dev/javascript/category.js
  10. +96 −52 dev/lib/sakai/sakai.api.groups.js
  11. +44 −7 dev/lib/sakai/sakai.api.util.js
  12. +1 −1  dev/s23/s23_site.html
  13. +1 −1  dev/search_sakai2.html
  14. +2 −2 devwidgets/addarea/addarea.html
  15. +1 −0  devwidgets/addarea/bundles/default.properties
  16. +2 −2 devwidgets/addpeople/addpeople.html
  17. +5 −20 devwidgets/addpeople/javascript/addpeople.js
  18. +1 −1  devwidgets/addtocontacts/addtocontacts.html
  19. +1 −0  devwidgets/addtocontacts/bundles/default.properties
  20. +4 −4 devwidgets/allcategories/allcategories.html
  21. +1 −0  devwidgets/allcategories/bundles/default.properties
  22. +1 −1  devwidgets/areapermissions/areapermissions.html
  23. +1 −1  devwidgets/assignlocation/assignlocation.html
  24. +6 −6 devwidgets/basiclti/basiclti.html
  25. +5 −0 devwidgets/basiclti/bundles/default.properties
  26. +4 −0 devwidgets/carousel/bundles/default.properties
  27. +25 −23 devwidgets/carousel/carousel.html
  28. +1 −1  devwidgets/carousel/css/carousel.css
  29. +4 −4 devwidgets/categories/categories.html
  30. +5 −0 devwidgets/categories/javascript/categories.js
  31. +2 −0  devwidgets/comments/bundles/default.properties
  32. +2 −2 devwidgets/comments/comments.html
  33. +1 −0  devwidgets/contacts/bundles/default.properties
  34. +21 −21 devwidgets/contacts/contacts.html
  35. +1 −1  devwidgets/contacts/javascript/contacts.js
  36. +1 −0  devwidgets/contentcomments/bundles/default.properties
  37. +2 −2 devwidgets/contentcomments/contentcomments.html
  38. +6 −0 devwidgets/contentmetadata/bundles/default.properties
  39. +6 −6 devwidgets/contentmetadata/contentmetadata.html
  40. +1 −0  devwidgets/contentpermissions/bundles/default.properties
  41. +1 −1  devwidgets/contentpermissions/contentpermissions.html
  42. +1 −0  devwidgets/creategroup/bundles/default.properties
  43. +1 −1  devwidgets/creategroup/creategroup.html
  44. +1 −0  devwidgets/dashboard/bundles/default.properties
  45. +1 −1  devwidgets/dashboard/dashboard.html
  46. +2 −0  devwidgets/discussion/bundles/default.properties
  47. +3 −3 devwidgets/discussion/discussion.html
  48. +1 −1  devwidgets/displayprofilesection/displayprofilesection.html
  49. +4 −4 devwidgets/embedcontent/embedcontent.html
  50. +5 −0 devwidgets/entity/bundles/default.properties
  51. +22 −22 devwidgets/entity/entity.html
  52. +8 −8 devwidgets/featuredcontent/featuredcontent.html
  53. +10 −4 devwidgets/featuredpeople/featuredpeople.html
  54. +9 −5 devwidgets/featuredworlds/featuredworlds.html
  55. +4 −0 devwidgets/footer/bundles/default.properties
  56. +3 −3 devwidgets/footer/footer.html
  57. +0 −1  devwidgets/googlemaps/googlemaps.html
  58. +1 −1  devwidgets/help/help.html
  59. +2 −0  devwidgets/inbox/bundles/default.properties
  60. +9 −9 devwidgets/inbox/inbox.html
  61. +1 −0  devwidgets/jisccontent/bundles/default.properties
  62. +1 −1  devwidgets/jisccontent/jisccontent.html
  63. +8 −3 devwidgets/lhnavigation/css/lhnavigation.css
  64. +1 −1  devwidgets/lhnavigation/javascript/lhnavigation.js
  65. +9 −8 devwidgets/lhnavigation/lhnavigation.html
  66. +3 −3 devwidgets/listpeopleinnode/listpeopleinnode.html
  67. BIN  devwidgets/mylibrary/images/mylibrary.png
  68. +9 −9 devwidgets/mylibrary/mylibrary.html
  69. +3 −0  devwidgets/newaddcontent/bundles/default.properties
  70. +9 −9 devwidgets/newaddcontent/newaddcontent.html
  71. +3 −0  devwidgets/newcreategroup/bundles/default.properties
  72. +3 −1 devwidgets/newcreategroup/javascript/newcreategroup.js
  73. +3 −3 devwidgets/newcreategroup/newcreategroup.html
  74. +1 −0  devwidgets/newsharecontent/bundles/default.properties
  75. +1 −1  devwidgets/newsharecontent/newsharecontent.html
  76. +3 −1 devwidgets/participants/bundles/default.properties
  77. +1 −0  devwidgets/participants/css/participants.css
  78. BIN  devwidgets/participants/images/participants.png
  79. +23 −6 devwidgets/participants/javascript/participants.js
  80. +10 −8 devwidgets/participants/participants.html
  81. +2 −2 devwidgets/personinfo/personinfo.html
  82. +1 −0  devwidgets/pickeruser/bundles/default.properties
  83. +1 −1  devwidgets/pickeruser/pickeruser.html
  84. +2 −0  devwidgets/poll/bundles/default.properties
  85. +2 −2 devwidgets/poll/poll.html
  86. +2 −0  devwidgets/profilesection/bundles/default.properties
  87. +2 −2 devwidgets/profilesection/profilesection.html
  88. +2 −2 devwidgets/recentactivity/recentactivity.html
  89. +3 −3 devwidgets/recentchangedcontent/recentchangedcontent.html
  90. +5 −1 devwidgets/recentcontactsnew/javascript/recentcontactsnew.js
  91. +6 −6 devwidgets/recentcontactsnew/recentcontactsnew.html
  92. +4 −0 devwidgets/recentmemberships/javascript/recentmemberships.js
  93. +7 −7 devwidgets/recentmemberships/recentmemberships.html
  94. +6 −6 devwidgets/sakai2tools/sakai2tools.html
  95. +3 −0  devwidgets/sakaidocs/bundles/default.properties
  96. +3 −3 devwidgets/sakaidocs/sakaidocs.html
  97. +13 −13 devwidgets/searchall/searchall.html
  98. +5 −5 devwidgets/searchcontent/searchcontent.html
  99. +4 −4 devwidgets/searchgroups/searchgroups.html
  100. +5 −5 devwidgets/searchpeople/searchpeople.html
  101. +1 −1  devwidgets/searchsakai2/searchsakai2.html
  102. +1 −0  devwidgets/sendmessage/bundles/default.properties
  103. +1 −1  devwidgets/sendmessage/sendmessage.html
  104. +35 −19 devwidgets/topnavigation/javascript/topnavigation.js
  105. +5 −5 devwidgets/topnavigation/topnavigation.html
  106. +1 −0  devwidgets/versions/bundles/default.properties
  107. +1 −1  devwidgets/versions/versions.html
  108. +2 −0  devwidgets/worldsettings/bundles/default.properties
  109. +2 −2 devwidgets/worldsettings/worldsettings.html
  110. +27 −1 tests/qunit/tests/unit/js/wcagcompliance.js
View
BIN  PSD/all_icons.psd
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
8 dev/acknowledgements.html
@@ -48,7 +48,7 @@
</div>
<div class="acknowledgement_information">
<h1>__MSG__JQUERY_AND_JQUERY_UI__</h1>
- <a href="http://www.jquery.com">www.jquery.com</a> <br /><br />
+ <a href="http://www.jquery.com" title="__MSG__JQUERY_AND_JQUERY_UI__">www.jquery.com</a> <br /><br />
@croby
croby added a note

We shouldn't need these titles in this file at all, as the contents of the a tag are the url that the user goes to

@croby
croby added a note

Still need to fix all the titles in this file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
<span>__MSG__JQUERY_IS_A_FAST_AND_CONCISE__</span>
</div>
</div>
@@ -64,7 +64,7 @@
</div>
<div class="acknowledgement_information">
<h1>__MSG__APACHE_SLING__</h1>
- <a href="http://sling.apache.org">sling.apache.org</a> <br /><br />
+ <a href="http://sling.apache.org" title="__MSG__APACHE_SLING__">sling.apache.org</a> <br /><br />
<span>__MSG__APACHE_SLING_IS_A_WEB_FRAMWORK__</span>
</div>
</div>
@@ -80,7 +80,7 @@
</div>
<div class="acknowledgement_information">
<h1>__MSG__FLUID_INFUSION__</h1>
- <a href="http://www.fluidproject.org/products/infusion">http://www.fluidproject.org/products/infusion</a> <br /><br />
+ <a href="http://www.fluidproject.org/products/infusion" title="__MSG__FLUID_INFUSION__">http://www.fluidproject.org/products/infusion</a> <br /><br />
<span>__MSG__WE_THINK_GOOD_INTERFACES__</span>
</div>
</div>
@@ -133,7 +133,7 @@
</div>
<div class="acknowledgement_information">
<h2>__MSG__COWBOY_BEN_ALMAN__</h2>
- <a href="http://benalman.com/about/license" target="_blank" title='__MSG__COWBOY_BEN_ALMAN__'>http://benalman.com/about/license</a>
+ <a href="http://benalman.com/about/license" target="_blank" title="__MSG__COWBOY_BEN_ALMAN__">http://benalman.com/about/license</a>
<br/>
<span>__MSG__JQUERY_BBQ__</span>
</div>
View
6 dev/admin/widgets.html
@@ -180,7 +180,7 @@ <h2 id="admin_widgets_header">__MSG__CONTRIB_WIDGETS__</h2>
<div class="dialog_header">
<div class="dialog_header_inner">
<h1>__MSG__DISABLE_WIDGET__</h1>
- <a href="javascript:;" class="jqmClose dialog_close_image" title="__MSG__CLOSE_DIALOG__">__MSG__CLOSE_DIALOG__</a>
+ <a href="javascript:;" class="jqmClose dialog_close_image">__MSG__CLOSE_DIALOG__</a>
</div>
</div>
<div class="dialog_content">
@@ -201,7 +201,7 @@ <h2 id="admin_widgets_header">__MSG__CONTRIB_WIDGETS__</h2>
<div class="dialog_header">
<div class="dialog_header_inner">
<h1>__MSG__ENABLE_WIDGET__</h1>
- <a href="javascript:;" class="jqmClose dialog_close_image" title="__MSG__CLOSE_DIALOG__">__MSG__CLOSE_DIALOG__</a>
+ <a href="javascript:;" class="jqmClose dialog_close_image">__MSG__CLOSE_DIALOG__</a>
</div>
</div>
<div class="dialog_content">
@@ -222,7 +222,7 @@ <h2 id="admin_widgets_header">__MSG__CONTRIB_WIDGETS__</h2>
<div class="dialog_header">
<div class="dialog_header_inner">
<h1>__MSG__DELETE_WIDGET__</h1>
- <a href="javascript:;" class="jqmClose dialog_close_image" title="__MSG__CLOSE_DIALOG__">__MSG__CLOSE_DIALOG__</a>
+ <a href="javascript:;" class="jqmClose dialog_close_image">__MSG__CLOSE_DIALOG__</a>
</div>
</div>
<div class="dialog_content">
View
11 dev/bundle/default.properties
@@ -16,6 +16,7 @@ ADAM_VANDENBERG = Adam Vandenberg
ADD = Add
ADD_A_DEGREE = Add a degree
ADD_A_DEGREE_TO_YOUR_DEGREE_LIST = Add a degree to your degree list
+ADD_A_NEW_AREA = Add a new area
ADD_A_PERSONAL_NOTE_TO_THE_INVITATION = Add a personal note to the invitation
ADD_A_POSITION = Add a position
ADD_A_POSITION_TO_YOUR_JOB_LIST = Add a position to your job list
@@ -349,6 +350,7 @@ DATE_OF_BIRTH_EXAMPLE = Please enter your date of birth in
DAY = day
DAYS = days
DECEMBER = December
+DEFAULT_PROFILE_PICTURE_FOR = Default profile picture for
DEGREE = Degree
DEGREE_INFORMATION_ID = Degree information id
DEGREES = Degrees
@@ -776,6 +778,9 @@ PLEASE_TRY_AGAIN_LATER = Please try again later
PLEASE_TYPE_IN_A_URL = Please type in a URL
PLEASE_TYPE_THE_WORD_BELOW = Please type the word below
PNG_IMAGE = PNG image
+POSSESSIVE = '
+POSSESSIVE_S = 's
+POSSESSIVE_KEY = s
POSSIBLE_REASONS_FOR_THE_PAGE_NOT_BEING_FOUND = Possible reasons for the page not being found:
POSTGRADUATE_STUDENT = Postgraduate Student
POWERPOINT_DOCUMENT = PowerPoint document
@@ -870,6 +875,7 @@ REQUEST_TO_JOIN = Request to join group
REQUEST_TO_JOIN_THIS_SITE = Request to join this site
REQUIRED_INFORMATION = Required Information
RESEARCH = Research
+RESET = Reset
RESULTS = results
RESULTS_LOCATED_IN = Results located in
RESULTS_TAGGED_UNDER = Results tagged with
@@ -943,6 +949,7 @@ SAKAI_WIDGETS = Sakai Widgets
SATURDAY = Saturday
SAVE_CHANGES = Save changes
SAVE = Save
+SAVE_CONTENT = Save content
SAVE_SETTINGS = Save settings
SAVING_FAILED = Saving failed
SAVING = Saving
@@ -989,6 +996,7 @@ SENDERS_PROFILE_PIC = Sender's profile pic
SEND_MESSAGE = Send Message
SEND_MESSAGE_TO = Send this message to
SENT_MESSAGES = Sent messages
+SEND_A_MESSAGE = Send a message
SEND_US_YOUR_FEEDBACK = Send us your feedback
SENT = Sent
SENT_THIS_ON = Sent this on
@@ -997,6 +1005,7 @@ SEPTEMBER = September
SET_ASSOCIATIONS = Set associations
SET_PERMISSIONS = Set permissions
SETTINGS = Settings
+SHARE_CONTENT = Share content
SHARE_FILES_WITH_THIS_GROUP = Share files with this group
SHARE = Share
SHOW = Show
@@ -1181,6 +1190,7 @@ VIDEO_FILE = Video file
VIDEO_NOT_SUPPORTED = Videos not yet supported
VIEWERS_OF_THIS_CONTENT = Viewers of this content
VIEWERS = Viewers
+VIEW = View
VIEW_GROUP = View group
VIEW_GROUP_PAGES = View Group Pages
VIEW_MORE_CONTENT_AND_MEDIA_RESULTS = View more content results
@@ -1188,6 +1198,7 @@ VIEW_MORE_GROUP_RESULT = View more group results
VIEW_MORE_PEOPLE_RESULTS = View more people results
VIEW_MY_PROFILE_AS = View My Profile As
VIEW_MY_PROFILE = View My Profile
+VIEW_OWNER_INFO = View owner information
VIEW_PROFILE = View profile
VIEW_THE_INSTITUTION_WEBSITE = View the institution website
VISIBLE_TO_ANYONE = Visible to anyone
View
2  dev/configuration/config.js
@@ -2954,7 +2954,7 @@ define(function(){
"_title": "Course website",
"_order": 3,
"_docref": "${pid}3",
- "_view": ["-student", "everyone", "anonmyous"],
+ "_view": ["-student", "everyone", "anonymous"],
"_edit": ["-lecturer", "-ta"]
},
"organizationnotes": {
View
2  dev/group.html
@@ -33,7 +33,7 @@
<div class="fl-container-flex">
<div class="fl-fix fl-centered fixed-container s3d-main-container s3d-twocolumn">
<div class="s3d-page-column-left">
- <button type="button" id="group_create_new_area" class="s3d-button s3d-header-button s3d-header-smaller-button" style="display:none;">+ Add a new area</button>
+ <button type="button" id="group_create_new_area" class="s3d-button s3d-header-button s3d-header-smaller-button" style="display:none;">+ __MSG__ADD_A_NEW_AREA__</button>
<div id="widget_addarea" class="widget_inline"></div>
<div id="widget_lhnavigation" class="widget_inline"></div>
</div>
View
BIN  dev/images/lefthandnav_count.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  dev/images/lefthandnav_count_hover.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
13 dev/javascript/category.js
@@ -39,6 +39,10 @@ require(["jquery","sakai/sakai.api.core"], function($, sakai) {
* @param {Array} bbqData Array of IDs fetched with bbq to help identify correct children
*/
var createBreadcrumb = function(dirData, bbqData){
+ if (!dirData){
+ sakai.api.Security.send404();
+ return false;
+ }
// Create top level breadcrumb
var breadcrumb = [];
breadcrumb.push({
@@ -151,12 +155,19 @@ require(["jquery","sakai/sakai.api.core"], function($, sakai) {
* @return {Array} Array of strings representing the selected hierarchy
*/
var getCategory = function(){
- var category = $.bbq.getState("l").split("-");
+ var category = $.bbq.getState("l");
+ if (category) {
+ category = category.split("-");
+ }
return category;
};
var doInit = function(){
var category = getCategory();
+ if (!$.isArray(category) || !sakai.config.Directory[category[0]]){
+ sakai.api.Security.send404();
+ return false;
+ }
sakai.config.Directory[category[0]].id = category[0];
generateNav(sakai.config.Directory[category[0]]);
createBreadcrumb(sakai.config.Directory[category[0]], category);
View
148 dev/lib/sakai/sakai.api.groups.js
@@ -74,6 +74,8 @@ define(
});
},
+ groupData : {},
+
/**
* Get the data for the specified group
*
@@ -82,28 +84,33 @@ define(
* @param {Boolean} async If this call should be ascynronous, defaults to true
*/
getGroupAuthorizableData : function(groupid, callback, async, cache) {
- if (async === null || async === undefined) {
- async = true;
- }
- if (cache !== false) {
- cache = true;
- }
- $.ajax({
- url: "/system/userManager/group/" + groupid + ".json",
- async: async,
- cache: cache,
- success: function(data) {
- if ($.isFunction(callback)) {
- callback(true, data);
- }
- },
- error: function(xhr, textStatus, thrownError) {
- debug.error("Could not get data for group " + groupid);
- if ($.isFunction(callback)) {
- callback(false, xhr);
- }
+ if ($.isPlainObject(sakaiGroupsAPI.groupData[groupid]) && $.isFunction(callback)) {
+ callback(true, sakaiGroupsAPI.groupData[groupid]);
+ } else {
+ if (async === null || async === undefined) {
+ async = true;
}
- });
+ if (cache !== false) {
+ cache = true;
+ }
+ $.ajax({
+ url: "/system/userManager/group/" + groupid + ".json",
+ async: async,
+ cache: cache,
+ success: function(data) {
+ sakaiGroupsAPI.groupData[groupid] = data;
+ if ($.isFunction(callback)) {
+ callback(true, data);
+ }
+ },
+ error: function(xhr, textStatus, thrownError) {
+ debug.error("Could not get data for group " + groupid);
+ if ($.isFunction(callback)) {
+ callback(false, xhr);
+ }
+ }
+ });
+ }
},
/**
@@ -784,31 +791,53 @@ define(
* Searches through managers and members of a group and returns the results
* @param {String} groupId Id of the group to search in
* @param {String} query Query put in by the user, if empty a search for all participants is executed
+ * @param {Number} num The number of items to search for (page size)
+ * @param {Number} page The current page (0-indexed)
+ * @param {String} sort The parameter to sort on (firstName or lastName)
+ * @param {String} sortOrder The direction of the sort (desc or asc)
* @param {Function} callback Function executed on success or error
+
*/
- searchMembers: function(groupId, query, callback){
+ searchMembers: function(groupId, query, num, page, sort, sortOrder, callback) {
if (groupId) {
var url = "";
- if(query && query !== "*"){
+ if (query && query !== "*") {
url = sakai_conf.URL.SEARCH_GROUP_MEMBERS + "?group=" + groupId + "&q=" + query;
- }else {
+ } else {
url = sakai_conf.URL.SEARCH_GROUP_MEMBERS_ALL + "?group=" + groupId;
}
+ if (num !== undefined) {
+ url += "&items=" + num;
+ }
+ if (page !== undefined) {
+ url += "&page=" + page;
+ }
+ if (sort) {
+ url += "&sortOn=" + sort;
+ }
+ if (sortOrder) {
+ url += "&sortOrder=" + sortOrder;
+ }
$.ajax({
url: url,
type: "GET",
success: function(data){
var participantCount = 0;
if (data.results.length) {
- $.each(data.results, function(index, user){
- sakaiGroupsAPI.getRole(user.userid, groupId, function(success, role){
- user.role = role;
- participantCount++;
- if (participantCount === data.results.length) {
- if ($.isFunction(callback)) {
- callback(true, data);
- }
- }
+ // Do a couple requests first so the group data is cached
+ sakaiGroupsAPI.getGroupAuthorizableData(groupId, function() {
+ sakaiGroupsAPI.getRole(data.results[0].userid, groupId, function(success, role) {
+ $.each(data.results, function(index, user){
+ sakaiGroupsAPI.getRole(user.userid, groupId, function(success, role){
+ user.role = role;
+ participantCount++;
+ if (participantCount === data.results.length) {
+ if ($.isFunction(callback)) {
+ callback(true, data);
+ }
+ }
+ });
+ });
});
});
} else {
@@ -830,7 +859,6 @@ define(
}
}
},
-
/**
* Returns all the users who are member of a certain group
*
@@ -841,7 +869,7 @@ define(
*/
getMembers : function(groupID, query, callback, everyone) {
var searchquery = query || "*";
- var groupInfo = sakaiGroupsAPI.getGroupAuthorizableData(groupID, function(success, data){
+ sakaiGroupsAPI.getGroupAuthorizableData(groupID, function(success, data){
if (success){
var roles = $.parseJSON(data.properties["sakai:roles"]);
var batchRequests = [];
@@ -883,6 +911,8 @@ define(
});
},
+ groupRoleData : {},
+
getRole : function(userId, groupID, callback){
var groupInfo = sakaiGroupsAPI.getGroupAuthorizableData(groupID, function(success, data){
if (success){
@@ -893,29 +923,43 @@ define(
var url = "/system/userManager/group/" + groupID + "-" + roles[i].id + ".everyone.json";
batchRequests.push({
"url": url,
- "method": "GET"
+ "method": "GET",
+ "parameters": {
+ items: 10000
+ }
});
}
- sakai_serv.batch(batchRequests, function(success, data){
- if (success) {
- var isMatch = function(user, index){
- return user.userid === userId;
- };
- for (var i = 0; i < roles.length; i++) {
- if (data.results.hasOwnProperty(i)) {
- var members = $.parseJSON(data.results[i].body);
- if ($.grep(members, isMatch).length > 0){
- role = roles[i].id;
- break;
- }
+ var parseRoles = function(data) {
+ var isMatch = function(user, index){
+ return user.userid === userId;
+ };
+
+ for (var i = 0; i < roles.length; i++) {
+ if (data.results.hasOwnProperty(i)) {
+ var members = $.parseJSON(data.results[i].body);
+ if ($.grep(members, isMatch).length > 0){
+ role = roles[i].id;
+ break;
}
}
- if ($.isFunction(callback)) {
- callback(true, role);
- }
}
- }, false, true);
+ if ($.isFunction(callback)) {
+ callback(true, role);
+ }
+ };
+
+ if ($.isPlainObject(sakaiGroupsAPI.groupRoleData[groupID])) {
+ parseRoles(sakaiGroupsAPI.groupRoleData[groupID]);
+ } else {
+ sakai_serv.batch(batchRequests, function(success, data){
+ if (success) {
+ sakaiGroupsAPI.groupRoleData[groupID] = data;
+ parseRoles(data);
+ }
+ }, false, true);
+ }
+
} else {
debug.error("Could not get members group info for " + groupID);
if ($.isFunction(callback)) {
View
51 dev/lib/sakai/sakai.api.util.js
@@ -443,18 +443,56 @@ define(
}
// Create elements to apply threedots
- $container = $("<div class=\"" + optClass + "\" style=\"width:" + width + "px; ; word-wrap:break-word; display:hidden;\"><span style=\"word-wrap:break-word;\" class=\"ellipsis_text\">" + body + "</span></div>");
+ $container = $("<div class=\"" + optClass + "\" style=\"width:" + width + "px; ; word-wrap:break-word; visibility:hidden;\"><span style=\"word-wrap:break-word;\" class=\"ellipsis_text\">" + body + "</span></div>");
$("body").append($container);
- $container.ThreeDots(params);
+
+ // There seems to be a race condition where the
+ // newly-added element returns a height of zero. This
+ // would cause ThreeDots to truncate the input string to
+ // the first letter. Try a couple of times for a non-zero
+ // height and then give up.
+ for (var attempt = 0; attempt < 10; attempt++) {
+ if ($container.height() > 0) {
+ $container.ThreeDots(params);
+ break;
+ }
+ }
+
var dotted = $container.children("span").text();
$container.remove();
if (!alreadySecure) {
dotted = sakai_util.Security.safeOutput(dotted);
}
+ // if params contains middledots = true then the string is threedotted in the middle
+ if(params && params.middledots && body.length > dotted.length){
+ var maxlength = dotted.length - 3;
+ if (!alreadySecure) {
+ body = sakai_util.Security.safeOutput(body);
+ }
+ var prepend = body.slice(0, maxlength / 2);
+ var append = body.slice(body.length - (maxlength / 2), body.length);
+ return prepend + "..." + append;
+ }
return dotted;
},
/**
+ * Returns the correct possessive use by determining how the string ends
+ *
+ * @param {String} string The string to check
+ * @return {String} the possessive to use
+ */
+ getPossessive : function(string) {
+ var possessive = require("sakai/sakai.api.i18n").General.getValueForKey("POSSESSIVE_S");
+ var key = $.trim(require("sakai/sakai.api.i18n").General.getValueForKey("POSSESSIVE_KEY")).toLowerCase();
+ var check = $.trim(string.charAt(string.length - 1)).toLowerCase();
+ if (check === key){
+ possessive = require("sakai/sakai.api.i18n").General.getValueForKey("POSSESSIVE");
+ }
+ return possessive;
+ },
+
+ /**
* Search for and replace parameters in a template (replaces both keys and properties)
* primarily used for making unique IDs for the group/course templates in config.js
*
@@ -528,7 +566,7 @@ define(
//change string to json object and get name from picture object
picture_name = $.parseJSON(profile.picture).name;
}
- return "/~" + id + "/public/profile/" + picture_name;
+ imgUrl = "/~" + sakai_util.safeURL(id) + "/public/profile/" + sakai_util.safeURL(picture_name);
} else if (profile.basic && profile.basic.elements && profile.basic.elements.picture && profile.basic.elements.picture.value) {
if (profile.basic.elements.picture.value.name) {
picture_name = profile.basic.elements.picture.value.name;
@@ -543,9 +581,8 @@ define(
} else {
return imgUrl;
}
- } else {
- return imgUrl;
}
+ return imgUrl;
},
/**
@@ -1843,11 +1880,11 @@ define(
$.each(data.results, function(i) {
if (data.results[i]["rep:userId"] && data.results[i]["rep:userId"] !== user.data.me.user.userid) {
if(!options.filterUsersGroups || $.inArray(data.results[i]["rep:userId"],options.filterUsersGroups)===-1){
- suggestions.push({"value": data.results[i]["rep:userId"], "name": user.getDisplayName(data.results[i]), "type": "user"});
+ suggestions.push({"value": data.results[i]["rep:userId"], "name": user.getDisplayName(data.results[i]), "picture": sakai_util.constructProfilePicture(data.results[i], "user"), "type": "user"});
}
} else if (data.results[i]["sakai:group-id"]) {
if(!options.filterUsersGroups || $.inArray(data.results[i]["sakai:group-id"],options.filterUsersGroups)===-1){
- suggestions.push({"value": data.results[i]["sakai:group-id"], "name": sakai_util.Security.safeOutput(data.results[i]["sakai:group-title"]), "type": "group"});
+ suggestions.push({"value": data.results[i]["sakai:group-id"], "name": sakai_util.Security.safeOutput(data.results[i]["sakai:group-title"]), "picture": sakai_util.constructProfilePicture(data.results[i], "group"), "type": "group"});
}
}
});
View
2  dev/s23/s23_site.html
@@ -89,7 +89,7 @@ <h1 id="s23_site_title" class="fl-force-left">__MSG__TITLE__</h1>
{/if}
{for tool in col}
<div class="s23_site_iframe_title">
- <a class="s23_site_iframe_title_reset" title="Reset" target="Main${tool.xid}" id="reset-Main${tool.xid}" href="${sakai.config.SakaiDomain}/portal/tool-reset/${tool.url}?panel=Main"><span>Reset</span></a><h2>${tool.title}</h2>
+ <a class="s23_site_iframe_title_reset" title="__MSG__RESET__" target="Main${tool.xid}" id="reset-Main${tool.xid}" href="${sakai.config.SakaiDomain}/portal/tool-reset/${tool.url}?panel=Main"><span>__MSG__RESET__</span></a><h2>${tool.title}</h2>
@croby
croby added a note

We can remove this title - the span inside of it has the same text

@jsloane
jsloane added a note

The span actually has "text-indent:-999em;" in the css, so the text isn't shown to the user. This already had the title attribute, I just changed it to an i18n string.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
</div>
<iframe name="Main${tool.xid}" id="Main${tool.xid}" class="s23_site_iframe" scrolling="auto" width="100%" frameborder="0" title="${tool.title}"></iframe>
{/for}
View
2  dev/search_sakai2.html
@@ -88,7 +88,7 @@ <h1 class="title">__MSG__MY_SAKAI2_SITES__</h1>
{for site in sites}
<div class="fl-container fl-fix search_result search_result_sites">
<a class="s3d-regular-links s3d-bold" href="/dev/s23/s23_site.html?id=${site.id}">
- <img src="/dev/images/sakai2sites.png" alt="Sites" />
+ <img src="/dev/images/sakai2sites.png" alt="${site.title}" />
<div class="search_result_course_site_title">${site.title}</div>
</a>
</div>
View
4 devwidgets/addarea/addarea.html
@@ -21,7 +21,7 @@
</div>
<div id="addarea_action_buttons" style="display:none;">
<button id="addarea_cancel_new_area" class="s3d-link-button s3d-bold" type="button">__MSG__CANCEL__</button>
- <button type="button" id="addarea_create_new_area" class="s3d-button s3d-overlay-button" >__MSG__CREATE__</button>
+ <button type="button" id="addarea_create_new_area" class="s3d-button s3d-overlay-button">__MSG__CREATE__</button>
</div>
</div>
</div>
@@ -68,7 +68,7 @@
--></div>
<div id="addarea_contents_container_description_template"><!--
- <img src="/devwidgets/addarea/images/addarea_preview.png" id="addarea_preview_image"/>
+ <img src="/devwidgets/addarea/images/addarea_preview.png" id="addarea_preview_image" alt="__MSG__AREA_PREVIEW__"/>
<span id="addarea_preview_description">${areadescription}</span>
<button type="button" class="s3d-button s3d-header-button addarea_select_template" data-context="${context}">__MSG__SELECT__</button>
View
1  devwidgets/addarea/bundles/default.properties
@@ -2,6 +2,7 @@ A_Z = A - Z
ADD_PAGE = Add page
ADVANCED = Advanced
AN_OVERVIEW_OF_CURRENT_ACTIVITY = An overview of current activity
+AREA_PREVIEW = Area preview
CLEAR = Clear
CONTENT_AND_SAKAI_DOC = Existing document
CONTENT_LIBRARY = Content library
View
4 devwidgets/addpeople/addpeople.html
@@ -70,7 +70,7 @@ <h1 class="s3d-dialog-header">__MSG__ADD_PEOPLE__</h1>
${total++|eat}
<li class="s3d-list-item">
<input type="checkbox" class="addpeople_checkbox" id="${contact.profile.userid}_chk"/>
- <label for="${contact.profile.userid}_chk"><img class="s3d-list-entity-picture" src="${contact.profile.basic.elements.picture || "/dev/images/default_profile_picture_32.png"}" alt="__MSG__PROFILE_PICTURE__"/></label>
+ <label for="${contact.profile.userid}_chk"><img class="s3d-list-entity-picture" src="${sakai.api.User.getProfilePicture(contact.profile)}" alt="__MSG__PROFILE_PICTURE__"/></label>
<a href="/~${contact.profile.userid|safeURL}" target="_blank" title="${sakai.api.User.getDisplayName(contact.profile)|safeOutput}'s __MSG__PROFILE__" class="s3d-entity-displayname s3d-regular-links s3d-bold">${sakai.api.Util.applyThreeDots(sakai.api.User.getDisplayName(contact.profile), 90, null, null, true)}</a>
</li>
<hr/>
@@ -80,7 +80,7 @@ <h1 class="s3d-dialog-header">__MSG__ADD_PEOPLE__</h1>
${total++|eat}
<li class="s3d-list-item">
<input type="checkbox" class="addpeople_checkbox" id="${group["sakai:group-id"]}_chk"/>
- <label for="${group["sakai:group-id"]}_chk"><img class="s3d-list-entity-picture" src="/dev/images/group_avatar_icon_35x35_nob.png" alt="__MSG__PROFILE_PICTURE__"/></label>
+ <label for="${group["sakai:group-id"]}_chk"><img class="s3d-list-entity-picture" src="${sakai.api.Groups.getProfilePicture(group)}" alt="__MSG__PROFILE_PICTURE__"/></label>
<a href="/~${group["sakai:group-id"]}" target="_blank" title="${group["sakai:group-title"]|safeOutput}'s __MSG__PROFILE__" class="s3d-entity-displayname s3d-regular-links s3d-bold">${sakai.api.Util.applyThreeDots(group["sakai:group-title"], 90)}</a>
</li>
<hr/>
View
25 devwidgets/addpeople/javascript/addpeople.js
@@ -288,17 +288,8 @@ require(["jquery", "sakai/sakai.api.core"], function($, sakai) {
* @return {Object} returnValue An object containing a list of displayNames and an Array of userID's to be added to the members list
*/
var createAutoSuggestedUser = function(userData) {
- var pictureURL = "";
+ var pictureURL = userData.attributes.picture;
var userid = userData.attributes.value;
- if (userData.attributes.picture) {
- pictureURL = "/~" + sakai.api.Util.safeURL(userid) + "/public/profile/" + userData.attributes.picture;
- } else {
- if (userData.attributes.type=== "group") {
- pictureURL = "/dev/images/group_avatar_icon_35x35_nob.png";
- } else {
- pictureURL = "/dev/images/default_User_icon_35x35.png";
- }
- }
var userObj = {
userid: userid,
name: userData.attributes.name,
@@ -356,16 +347,10 @@ require(["jquery", "sakai/sakai.api.core"], function($, sakai) {
userObj.originalPermission = currentTemplate.roles[i].id;
}
});
- if (data[role].results[user].picture) {
- userObj.picture = "/~" + sakai.api.Util.safeURL(data[role].results[user]["rep:userId"]) + "/public/profile/" + $.parseJSON(data[role].results[user].picture).name;
- }
- else {
- if (data[role].results[user]["sakai:group-id"]) {
- userObj.picture = "/dev/images/group_avatar_icon_35x35_nob.png";
- }
- else {
- userObj.picture = "/dev/images/default_User_icon_35x35.png";
- }
+ if (data[role].results[user]["sakai:group-id"]) {
+ userObj.picture = sakai.api.Groups.getProfilePicture(data[role].results[user]);
+ } else {
+ userObj.picture = sakai.api.User.getProfilePicture(data[role].results[user]);
}
selectedUsers[userObj.userid] = userObj;