diff options
Diffstat (limited to 'askbot/skins')
-rw-r--r-- | askbot/skins/common/media/js/post.js | 11 | ||||
-rw-r--r-- | askbot/skins/common/media/js/user.js | 22 | ||||
-rw-r--r-- | askbot/skins/common/media/js/utils.js | 4 | ||||
-rw-r--r-- | askbot/skins/default/media/style/style.less | 17 | ||||
-rw-r--r-- | askbot/skins/default/templates/groups.html | 46 | ||||
-rw-r--r-- | askbot/skins/default/templates/macros.html | 54 | ||||
-rw-r--r-- | askbot/skins/default/templates/user_profile/user.html | 2 | ||||
-rw-r--r-- | askbot/skins/default/templates/user_profile/user_stats.html | 17 | ||||
-rw-r--r-- | askbot/skins/default/templates/users.html | 72 | ||||
-rw-r--r-- | askbot/skins/default/templates/widgets/group_info.html | 24 |
10 files changed, 163 insertions, 106 deletions
diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js index 294c5f41..7df01c83 100644 --- a/askbot/skins/common/media/js/post.js +++ b/askbot/skins/common/media/js/post.js @@ -2354,9 +2354,8 @@ UserGroupProfileEditor.prototype.decorate = function(element){ logo_changer.decorate(change_logo_btn); }; -var GroupJoinButton = function(group_id){ +var GroupJoinButton = function(){ TwoStateToggle.call(this); - this._group_id = group_id; }; inherits(GroupJoinButton, TwoStateToggle); @@ -2375,7 +2374,8 @@ GroupJoinButton.prototype.getHandler = function(){ url: askbot['urls']['join_or_leave_group'], success: function(data){ if (data['success']){ - me.setOn(data['is_member']); + var new_state = data['is_member'] ? 'on-state':'off-state'; + me.setState(new_state); } else { showMessage(me.getElement(), data['message']); } @@ -2384,6 +2384,11 @@ GroupJoinButton.prototype.getHandler = function(){ }; }; +GroupJoinButton.prototype.decorate = function(elem) { + GroupJoinButton.superClass_.decorate.call(this, elem); + this._group_id = this._element.data('groupId'); +}; + $(document).ready(function() { $('[id^="comments-for-"]').each(function(index, element){ var comments = new PostCommentsWidget(); diff --git a/askbot/skins/common/media/js/user.js b/askbot/skins/common/media/js/user.js index b7dc0951..ad0b8365 100644 --- a/askbot/skins/common/media/js/user.js +++ b/askbot/skins/common/media/js/user.js @@ -644,13 +644,13 @@ UserGroup.prototype.decorate = function(element){ this._name = $.trim(element.find('a').html()); var deleter = new DeleteIcon(); deleter.setHandler(this.getDeleteHandler()); - deleter.setContent('x'); - this._element.find('.group-name').append(deleter.getElement()); + deleter.setContent(gettext('Remove')); + this._element.find('td:last').append(deleter.getElement()); this._delete_icon = deleter; }; UserGroup.prototype.createDom = function(){ - var element = this.makeElement('li'); + var element = this.makeElement('tr'); element.html(this._content); this._element = element; this.decorate(element); @@ -675,7 +675,7 @@ GroupsContainer.prototype.decorate = function(element){ var group_names = []; var me = this; //collect list of groups - $.each(element.find('li'), function(idx, li){ + $.each(element.find('tr'), function(idx, li){ var group = new UserGroup(); group.setGroupsContainer(me); group.decorate($(li)); @@ -829,21 +829,25 @@ UserGroupsEditor.prototype.decorate = function(element){ adder.decorate(add_link); var groups_container = new GroupsContainer(); - groups_container.decorate(element.find('ul')); + groups_container.decorate(element.find('#groups-list')); adder.setGroupsContainer(groups_container); //todo - add group deleters }; (function(){ - var fbtn = $('.follow-toggle'); + var fbtn = $('.follow-user-toggle'); if (fbtn.length === 1){ var follow_user = new FollowUser(); follow_user.decorate(fbtn); follow_user.setUserName(askbot['data']['viewUserName']); } - if (askbot['data']['userIsAdminOrMod']){ - var group_editor = new UserGroupsEditor(); - group_editor.decorate($('#user-groups')); + if (askbot['data']['userId'] !== askbot['data']['viewUserId']) { + if (askbot['data']['userIsAdminOrMod']){ + var group_editor = new UserGroupsEditor(); + group_editor.decorate($('#user-groups')); + } else { + $('#add-group').remove(); + } } else { $('#add-group').remove(); } diff --git a/askbot/skins/common/media/js/utils.js b/askbot/skins/common/media/js/utils.js index 297e3f9a..8c2a478e 100644 --- a/askbot/skins/common/media/js/utils.js +++ b/askbot/skins/common/media/js/utils.js @@ -786,9 +786,7 @@ TwoStateToggle.prototype.decorate = function(element){ this.toggleUrl = element.attr('data-toggle-url'); //detect state and save it - if ( - element.attr('nodeName') === 'INPUT' && element.attr('type', 'checkbox') - ) { + if (this.isCheckBox()) { this._state = element.attr('checked') ? 'state-on' : 'state-off'; } else { var text = $.trim(element.html()); diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less index c3423418..f015ae0c 100644 --- a/askbot/skins/default/media/style/style.less +++ b/askbot/skins/default/media/style/style.less @@ -1216,7 +1216,9 @@ ul#related-tags li { color: #1A1A1A; } -.users-page h1, .tags-page h1 { +.users-page h1, +.tags-page h1, +.groups-page h1 { float: left; } @@ -3425,19 +3427,14 @@ img.group-logo { #groups-list { margin-left: 0px; - li { - display: inline; - list-style-type: none; - list-style-position: inside; - float: left; - text-align: center; + .group-name { + padding-right: 20px; } - .group-logo, .group-name { - display: block; + td { + padding-bottom: 5px; } } - #reject-edit-modal { input, textarea { width: 514px; diff --git a/askbot/skins/default/templates/groups.html b/askbot/skins/default/templates/groups.html index eda0c3ff..2499ac9f 100644 --- a/askbot/skins/default/templates/groups.html +++ b/askbot/skins/default/templates/groups.html @@ -1,18 +1,48 @@ {% import "macros.html" as macros %} -{% extends 'one_column_body.html' %} +{% extends 'two_column_body.html' %} {% block title %}{% trans %}Groups{% endtrans %}{% endblock %} {% block content %} - <h1 class="section-title">{% trans %}Groups{% endtrans %}</h1> - {% if can_edit %} + <div id="content-header"> + <h1 class="section-title">{% trans %}Groups{% endtrans %}</h1> + {% if request.user.is_authenticated() %} + <div class="tabBar"> + <div class="tabsC"> + <a id="all-groups" class="first{% if tab_name=="all-groups" %} on{% endif %}" + title="{% trans %}All groups{% endtrans %}" + href="{% url groups %}?sort=all-groups" + ><span>{% trans %}all groups{% endtrans %}</span></a> + <a id="my-groups" {% if tab_name=="my-groups" %}class="on"{% endif %} + title="{% trans %}My groups{% endtrans %}" + href="{% url groups %}?sort=my-groups" + ><span>{% trans %}my groups{% endtrans %}</span></a> + </div> + </div> + {% endif %} + <div class="clearfix"></div> + </div> + {% if user_can_add_groups %} <p id="group-add-tip"> {% trans %}Tip: to create a new group - please go to some user profile and add the new group there. That user will be the first member of the group{% endtrans %} </p> {% endif %} - <ul id="groups-list"> + <table id="groups-list"> {% for group in groups %} - <li> - {{ macros.user_group(group) }} - </li> + <tr> + {{ macros.user_group(group, groups_membership_info[group.id]) }} + </tr> {% endfor %} - </ul> + </table> +{% endblock %} +{% block endjs %} + <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script> + <script src='{{"/js/post.js"|media}}' type='text/javascript'></script> + {% if request.user.is_authenticated() %} + <script type="text/javascript"> + askbot['urls']['join_or_leave_group'] = '{% url join_or_leave_group %}'; + $.each($('.group-join-btn'), function(idx, elem){ + var group_join_btn = new GroupJoinButton(); + group_join_btn.decorate($(elem)); + }); + </script> + {% endif %} {% endblock %} diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html index 4bae1e45..6ba15373 100644 --- a/askbot/skins/default/templates/macros.html +++ b/askbot/skins/default/templates/macros.html @@ -9,7 +9,7 @@ {%- macro follow_toggle(follow, name, alias, id) -%} {# follow - boolean; name - object type name; alias - e.g. users name; id - object id #} <div - class="follow-toggle" + class="follow-toggle follow-user-toggle" id="follow-{{ name }}-{{ id }}" > {% if follow %} @@ -221,22 +221,50 @@ poor design of the data or methods on data objects #} </ul> {%- endmacro -%} -{%- macro user_group(group) -%} - {% if group.group_profile.logo_url %} - <a href="{% url users_by_group group.id, group.name|replace('-', ' ')|slugify %}"> - <img class="group-logo" src="{{group.group_profile.logo_url}}" alt='{% trans name=group.name|escape %}logo for user group "{{name}}"{% endtrans %}' /> - </a> - {% endif %} - <div class="group-name"> - <a +{%- macro user_group(group, membership_info) -%} + <td> + <a class="group-name" href="{% url users_by_group group.id, group.name|replace('-', ' ')|slugify %}" >{{ group.name|escape }}</a> - </div> - <!--div id="group-{{group.id}}-description"> + </td> + <td> + <span class="group-description"> {% if group.tag_wiki %} - {{ group.tag_wiki.html }} + {{ group.tag_wiki.summary }} + {% endif %} + </span> + </td> + <td> + {% if membership_info %} + {{ group_join_button( + group_id = group.id, + can_join = membership_info['can_join'], + is_member = membership_info['is_member'] + ) + }} + {% endif %} + </td> +{%- endmacro -%} + +{%- macro group_join_button(group_id = None, can_join = False, is_member = False) -%} + {% if can_join or is_member %} + <button + class="group-join-btn follow-toggle {% if is_member %}on on-state{% endif %}" + data-group-id="{{group_id}}" + data-off-prompt-text="{% trans %}Leave this group{% endtrans %}" + data-on-prompt-text="{% trans %}Join this group{% endtrans %}" + data-on-state-text="{% trans %}You are a member{% endtrans %}" + data-off-state-text="{% trans %}Join this group{% endtrans %}" + > + {% if is_member %} + {% trans %}You are a member{% endtrans %} + {% else %} + {% if can_join %} + {% trans %}Join this group{% endtrans %} + {% endif %} + {% endif %} + </button> {% endif %} - </div--> {%- endmacro -%} {# todo: remove the extra content argument to make its usage more explicit #} diff --git a/askbot/skins/default/templates/user_profile/user.html b/askbot/skins/default/templates/user_profile/user.html index 15e0622a..bb293b9b 100644 --- a/askbot/skins/default/templates/user_profile/user.html +++ b/askbot/skins/default/templates/user_profile/user.html @@ -30,6 +30,8 @@ <script type='text/javascript' src='{{"/js/jquery.form.js"|media}}'></script> {% endif %} <script type="text/javascript" src='{{"/js/user.js"|media}}'></script> + <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script> + <script type="text/javascript" src='{{"/js/post.js"|media}}'></script> {% block userjs %} {% endblock %} {% endblock %} diff --git a/askbot/skins/default/templates/user_profile/user_stats.html b/askbot/skins/default/templates/user_profile/user_stats.html index 43b7f4fa..b125589c 100644 --- a/askbot/skins/default/templates/user_profile/user_stats.html +++ b/askbot/skins/default/templates/user_profile/user_stats.html @@ -12,15 +12,13 @@ username = view_user.username %}{{username}}'s groups{% endtrans %} </h2> - <ul id="groups-list"> - {% if user_groups %} + <table id="groups-list"> {% for group in user_groups %} - <li> - {{ macros.user_group(group) }} - </li> + <tr> + {{ macros.user_group(group, groups_membership_info[group.id]) }} + </tr> {% endfor %} - {% endif %} - </ul> + </table> <div class="clearfix"></div> <a id="add-group">{% trans %}add group{% endtrans %}</a> </div> @@ -156,8 +154,13 @@ {% block endjs %} {{ super() }} <script type="text/javascript"> + askbot['urls']['join_or_leave_group'] = '{% url join_or_leave_group %}'; $(document).ready(function(){ setup_badge_details_toggle(); + $.each($('.group-join-btn'), function(idx, elem){ + var group_join_btn = new GroupJoinButton(); + group_join_btn.decorate($(elem)); + }); }); </script> {% endblock %} diff --git a/askbot/skins/default/templates/users.html b/askbot/skins/default/templates/users.html index 3fa35643..b926b428 100644 --- a/askbot/skins/default/templates/users.html +++ b/askbot/skins/default/templates/users.html @@ -95,45 +95,45 @@ {% else %} var codeFriendlyMarkdown = false; {% endif %} - $().ready(function(){ - {% if group and request.user.is_authenticated() %} - var group_join_btn = new GroupJoinButton({{ group.id }}); + {% if group and request.user.is_authenticated() %} + $().ready(function(){ + var group_join_btn = new GroupJoinButton(); group_join_btn.decorate($('.group-join-btn')); - {% endif %} - //setup WMD editor - if (askbot['data']['userIsAdminOrMod'] === true){ - //todo: this is kind of Attacklab.init ... should not be here - Attacklab.wmd = function(){ - Attacklab.loadEnv = function(){ - var mergeEnv = function(env){ - if(!env){ - return; - } - - for(var key in env){ - Attacklab.wmd_env[key] = env[key]; - } + //setup WMD editor + if (askbot['data']['userIsAdminOrMod'] === true){ + //todo: this is kind of Attacklab.init ... should not be here + Attacklab.wmd = function(){ + Attacklab.loadEnv = function(){ + var mergeEnv = function(env){ + if(!env){ + return; + } + + for(var key in env){ + Attacklab.wmd_env[key] = env[key]; + } + }; + + mergeEnv(Attacklab.wmd_defaults); + mergeEnv(Attacklab.account_options); + mergeEnv(top["wmd_options"]); + Attacklab.full = true; + + var defaultButtons = "bold italic link blockquote code image ol ul heading hr"; + Attacklab.wmd_env.buttons = Attacklab.wmd_env.buttons || defaultButtons; }; - - mergeEnv(Attacklab.wmd_defaults); - mergeEnv(Attacklab.account_options); - mergeEnv(top["wmd_options"]); - Attacklab.full = true; - - var defaultButtons = "bold italic link blockquote code image ol ul heading hr"; - Attacklab.wmd_env.buttons = Attacklab.wmd_env.buttons || defaultButtons; + Attacklab.loadEnv(); }; - Attacklab.loadEnv(); - }; - Attacklab.wmd(); - Attacklab.wmdBase(); - var group_editor = new UserGroupProfileEditor(); - group_editor.decorate($('#group-wiki-{{group.id}}')); - } - Hilite.exact = false; - Hilite.elementid = "main-body"; - Hilite.debug_referrer = location.href; - }); + Attacklab.wmd(); + Attacklab.wmdBase(); + var group_editor = new UserGroupProfileEditor(); + group_editor.decorate($('#group-wiki-{{group.id}}')); + } + Hilite.exact = false; + Hilite.elementid = "main-body"; + Hilite.debug_referrer = location.href; + }); + {% endif %} </script> {% endblock %} <!-- end users.html --> diff --git a/askbot/skins/default/templates/widgets/group_info.html b/askbot/skins/default/templates/widgets/group_info.html index 601930af..5d3a4c7f 100644 --- a/askbot/skins/default/templates/widgets/group_info.html +++ b/askbot/skins/default/templates/widgets/group_info.html @@ -1,3 +1,4 @@ +{% import "macros.html" as macros %} <div id="group-wiki-{{group.id}}" class="box group-wiki"> <h2>{% trans %}Group info{% endtrans %}</h2> <img class="group-logo" @@ -13,23 +14,12 @@ {% endif %} </div> <div class="clearfix"></div> - {% if user_can_join_group or user_is_group_member %} - <button - class="group-join-btn follow-toggle {% if user_is_group_member %}on on-state{% endif %}" - data-off-prompt-text="{% trans %}Leave this group{% endtrans %}" - data-on-prompt-text="{% trans %}Join this group{% endtrans %}" - data-on-state-text="{% trans %}You are a member{% endtrans %}" - data-off-state-text="{% trans %}Join this group{% endtrans %}" - > - {% if user_is_group_member %} - {% trans %}You are a member{% endtrans %} - {% else %} - {% if user_can_join_group %} - {% trans %}Join this group{% endtrans %} - {% endif %} - {% endif %} - </button> - {% endif %} + {{ macros.group_join_button( + group_id = group.id, + can_join = user_can_join_group, + is_member = user_is_group_member + ) + }} {% if request.user.is_authenticated() and request.user.is_administrator() %} <div class="controls"> <a class="edit-description" |