##// END OF EJS Templates
repositories: bring back watch action in summary view
marcink -
r3670:4c16050d new-ui
parent child Browse files
Show More
@@ -237,6 +237,8 b' class RepoAppView(BaseAppView):'
237 c.rhodecode_db_repo = self.db_repo
237 c.rhodecode_db_repo = self.db_repo
238 c.repo_name = self.db_repo_name
238 c.repo_name = self.db_repo_name
239 c.repository_pull_requests = self.db_repo_pull_requests
239 c.repository_pull_requests = self.db_repo_pull_requests
240 c.repository_is_user_following = ScmModel().is_following_repo(
241 self.db_repo_name, self._rhodecode_user.user_id)
240 self.path_filter = PathFilter(None)
242 self.path_filter = PathFilter(None)
241
243
242 c.repository_requirements_missing = {}
244 c.repository_requirements_missing = {}
@@ -297,8 +297,7 b' class JournalView(BaseAppView):'
297 user_id = self.request.POST.get('follows_user_id')
297 user_id = self.request.POST.get('follows_user_id')
298 if user_id:
298 if user_id:
299 try:
299 try:
300 ScmModel().toggle_following_user(
300 ScmModel().toggle_following_user(user_id, self._rhodecode_user.user_id)
301 user_id, self._rhodecode_user.user_id)
302 Session().commit()
301 Session().commit()
303 return 'ok'
302 return 'ok'
304 except Exception:
303 except Exception:
@@ -307,8 +306,7 b' class JournalView(BaseAppView):'
307 repo_id = self.request.POST.get('follows_repo_id')
306 repo_id = self.request.POST.get('follows_repo_id')
308 if repo_id:
307 if repo_id:
309 try:
308 try:
310 ScmModel().toggle_following_repo(
309 ScmModel().toggle_following_repo(repo_id, self._rhodecode_user.user_id)
311 repo_id, self._rhodecode_user.user_id)
312 Session().commit()
310 Session().commit()
313 return 'ok'
311 return 'ok'
314 except Exception:
312 except Exception:
@@ -360,7 +360,7 b' class MyAccountView(BaseAppView, DataGri'
360 'repository.read', 'repository.write', 'repository.admin'])
360 'repository.read', 'repository.write', 'repository.admin'])
361
361
362 repos_data = RepoModel().get_repos_as_dict(
362 repos_data = RepoModel().get_repos_as_dict(
363 repo_list=repo_list, admin=admin)
363 repo_list=repo_list, admin=admin, short_name=False)
364 # json used to render the grid
364 # json used to render the grid
365 return json.dumps(repos_data)
365 return json.dumps(repos_data)
366
366
@@ -233,8 +233,6 b' class RepoSummaryView(RepoAppView):'
233 c.enable_downloads = self.db_repo.enable_downloads
233 c.enable_downloads = self.db_repo.enable_downloads
234 c.repository_followers = scm_model.get_followers(self.db_repo)
234 c.repository_followers = scm_model.get_followers(self.db_repo)
235 c.repository_forks = scm_model.get_forks(self.db_repo)
235 c.repository_forks = scm_model.get_forks(self.db_repo)
236 c.repository_is_user_following = scm_model.is_following_repo(
237 self.db_repo_name, self._rhodecode_user.user_id)
238
236
239 # first interaction with the VCS instance after here...
237 # first interaction with the VCS instance after here...
240 if c.repository_requirements_missing:
238 if c.repository_requirements_missing:
@@ -199,7 +199,7 b' class RepoModel(BaseModel):'
199 repo.update_commit_cache()
199 repo.update_commit_cache()
200
200
201 def get_repos_as_dict(self, repo_list=None, admin=False,
201 def get_repos_as_dict(self, repo_list=None, admin=False,
202 super_user_actions=False):
202 super_user_actions=False, short_name=None):
203 _render = get_current_request().get_partial_renderer(
203 _render = get_current_request().get_partial_renderer(
204 'rhodecode:templates/data_table/_dt_elements.mako')
204 'rhodecode:templates/data_table/_dt_elements.mako')
205 c = _render.get_call_context()
205 c = _render.get_call_context()
@@ -208,8 +208,12 b' class RepoModel(BaseModel):'
208 return _render('quick_menu', repo_name)
208 return _render('quick_menu', repo_name)
209
209
210 def repo_lnk(name, rtype, rstate, private, archived, fork_of):
210 def repo_lnk(name, rtype, rstate, private, archived, fork_of):
211 if short_name is not None:
212 short_name_var = short_name
213 else:
214 short_name_var = not admin
211 return _render('repo_name', name, rtype, rstate, private, archived, fork_of,
215 return _render('repo_name', name, rtype, rstate, private, archived, fork_of,
212 short_name=not admin, admin=False)
216 short_name=short_name_var, admin=False)
213
217
214 def last_change(last_change):
218 def last_change(last_change):
215 if admin and isinstance(last_change, datetime.datetime) and not last_change.tzinfo:
219 if admin and isinstance(last_change, datetime.datetime) and not last_change.tzinfo:
@@ -16,58 +16,44 b''
16 // # RhodeCode Enterprise Edition, including its added features, Support services,
16 // # RhodeCode Enterprise Edition, including its added features, Support services,
17 // # and proprietary license terms, please see https://rhodecode.com/licenses/
17 // # and proprietary license terms, please see https://rhodecode.com/licenses/
18
18
19 var onSuccessFollow = function(target){
19 var onSuccessFollow = function (target) {
20 var f = $(target);
20 var targetEl = $(target);
21 var f_cnt = $('#current_followers_count');
22
21
23 if(f.hasClass('follow')){
22 var callback = function () {
24 f.removeClass('follow');
23 targetEl.animate({'opacity': 1.00}, 200);
25 f.addClass('following');
24 if (targetEl.hasClass('watching')) {
26 f.attr('title', _gettext('Stop following this repository'));
25 targetEl.removeClass('watching');
27 $(f).html(_gettext('Unfollow'));
26 targetEl.attr('title', _gettext('Stopped watching this repository'));
28 if(f_cnt.length){
27 $(targetEl).html(_gettext('Watch'));
29 var cnt = Number(f_cnt.html())+1;
28 } else {
30 f_cnt.html(cnt);
29 targetEl.addClass('watching');
30 targetEl.attr('title', _gettext('Started watching this repository'));
31 $(targetEl).html(_gettext('Unwatch'));
31 }
32 }
32 }
33 };
33 else{
34 targetEl.animate({'opacity': 0.15}, 200, callback);
34 f.removeClass('following');
35 f.addClass('follow');
36 f.attr('title', _gettext('Start following this repository'));
37 $(f).html(_gettext('Follow'));
38 if(f_cnt.length){
39 var cnt = Number(f_cnt.html())-1;
40 f_cnt.html(cnt);
41 }
42 }
43 };
35 };
44
36
45 // TODO:: check if the function is needed. 0 usage found
37
46 var toggleFollowingUser = function(target,follows_user_id,token,user_id){
38 var toggleFollowingUser = function (target, follows_user_id) {
47 var args = {
39 var args = {
48 'follows_user_id': follows_user_id,
40 'follows_user_id': follows_user_id,
49 'auth_token': token,
50 'csrf_token': CSRF_TOKEN
41 'csrf_token': CSRF_TOKEN
51 };
42 };
52 if(user_id != undefined){
43
53 args.user_id = user_id
44 ajaxPOST(pyroutes.url('toggle_following'), args, function () {
54 }
55 ajaxPOST(pyroutes.url('toggle_following'), args, function(){
56 onSuccessFollow(target);
45 onSuccessFollow(target);
57 });
46 });
58 return false;
47 return false;
59 };
48 };
60
49
61 var toggleFollowingRepo = function(target,follows_repo_id,token,user_id){
50 var toggleFollowingRepo = function (target, follows_repo_id) {
62 var args = {
51 var args = {
63 'follows_repo_id': follows_repo_id,
52 'follows_repo_id': follows_repo_id,
64 'auth_token': token,
65 'csrf_token': CSRF_TOKEN
53 'csrf_token': CSRF_TOKEN
66 };
54 };
67 if(user_id != undefined){
55
68 args.user_id = user_id
56 ajaxPOST(pyroutes.url('toggle_following'), args, function () {
69 }
70 ajaxPOST(pyroutes.url('toggle_following'), args, function(){
71 onSuccessFollow(target);
57 onSuccessFollow(target);
72 });
58 });
73 return false;
59 return false;
@@ -217,6 +217,15 b''
217 <div class="pull-right">
217 <div class="pull-right">
218 %if c.rhodecode_user.username != h.DEFAULT_USER:
218 %if c.rhodecode_user.username != h.DEFAULT_USER:
219 <a href="${h.route_path('atom_feed_home', repo_name=c.rhodecode_db_repo.repo_name, _query=dict(auth_token=c.rhodecode_user.feed_token))}" title="${_('RSS Feed')}" class="btn btn-sm"><i class="icon-rss-sign"></i>RSS</a>
219 <a href="${h.route_path('atom_feed_home', repo_name=c.rhodecode_db_repo.repo_name, _query=dict(auth_token=c.rhodecode_user.feed_token))}" title="${_('RSS Feed')}" class="btn btn-sm"><i class="icon-rss-sign"></i>RSS</a>
220
221 <a href="#WatchRepo" onclick="toggleFollowingRepo(this, templateContext.repo_id); return false" title="${_('Watch this Repository and actions on it in your personalized journal')}" class="btn btn-sm ${('watching' if c.repository_is_user_following else '')}">
222 % if c.repository_is_user_following:
223 Unwatch
224 % else:
225 Watch
226 % endif
227
228 </a>
220 %else:
229 %else:
221 <a href="${h.route_path('atom_feed_home', repo_name=c.rhodecode_db_repo.repo_name)}" title="${_('RSS Feed')}" class="btn btn-sm"><i class="icon-rss-sign"></i>RSS</a>
230 <a href="${h.route_path('atom_feed_home', repo_name=c.rhodecode_db_repo.repo_name)}" title="${_('RSS Feed')}" class="btn btn-sm"><i class="icon-rss-sign"></i>RSS</a>
222 %endif
231 %endif
General Comments 0
You need to be logged in to leave comments. Login now