浏览代码

Merge branch 'master' of github.com:tracim/tracim

Bastien Sevajol (Algoo) 8 年前
父节点
当前提交
0f30c80edf

+ 86 - 1
API.md 查看文件

32
        ]
32
        ]
33
     }
33
     }
34
 
34
 
35
-## Calendars
35
+## Users
36
+
37
+### List
38
+
39
+    GET /api/users/
40
+
41
+Return list of all users of the tracim instance
42
+
43
+#### Response
44
+
45
+    {
46
+      "value_list": [
47
+        {
48
+          "id": 0,
49
+          "name": "Georges Abitbol",
50
+          "email": "g.abitbol@laclasse.com",
51
+          "canCreateWs": true,
52
+          "isAdmin": true,
53
+          "config": {
54
+            "sendEmailNotif": true
55
+          }
56
+        }, {
57
+          "id": 145,
58
+          "name": "Peter",
59
+          "email": "peter@laclasse.com",
60
+          "canCreateWs": false,
61
+          "isAdmin": false,
62
+          "config": {
63
+            "sendEmailNotif": false
64
+        }
65
+      ]
66
+    }
67
+
68
+## Users_Workspace (Role)
69
+
70
+### List
71
+
72
+    GET /api/users_workspace/
73
+
74
+Return list of all roles of all workspaces the connected user has access to
75
+
76
+#### Response
77
+
78
+    {
79
+      "value_list": [
80
+        {
81
+          "userId": 0,
82
+          "workspaceId": 1,
83
+          "roleId": 8,
84
+          "subscribedNotif": true
85
+        }, {
86
+          "userId": 2,
87
+          "workspaceId": 2,
88
+          "roleId": 2,
89
+          "subscribedNotif": true
90
+        }, {
91
+          "userId": 5,
92
+          "workspaceId": 3,
93
+          "roleId": 4,
94
+          "subscribedNotif": false
95
+        }
96
+      ]
97
+    }
98
+
99
+## Timezone
100
+
101
+### List
102
+
103
+    GET /api/timezone/
104
+
105
+Return list of all timezone available when creating a user
106
+
107
+#### Response
108
+
109
+    {
110
+      "value_list": [
111
+        "Africa/Abidjan",
112
+        "Africa/Accra",
113
+        "Africa/Addis_Ababa",
114
+        "Africa/Algiers",
115
+        "Africa/Asmara",
116
+        ...
117
+      ]
118
+    }
119
+
120
+## Calendars
36
 
121
 
37
 ### List
122
 ### List
38
 
123
 

+ 186 - 30
tracim/tracim/public/assets/css/dashboard.css 查看文件

46
     color: #DDD;
46
     color: #DDD;
47
 }
47
 }
48
 
48
 
49
+.navbar-brand {
50
+  padding: 0 0 0 5px;
51
+}
52
+
49
 /*
53
 /*
50
  * Sidebar
54
  * Sidebar
51
  */
55
  */
54
 .sidebar {
58
 .sidebar {
55
   display: none;
59
   display: none;
56
 }
60
 }
57
-@media (min-width: 768px) {
58
-  .sidebar {
59
-    position: fixed;
60
-    top: 51px;
61
-    bottom: 0;
62
-    left: 0;
63
-    width: 260px;
64
-    z-index: 1000;
65
-    display: block;
66
-    padding: 20px;
67
-    overflow-x: hidden;
68
-    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
69
-/*    background-color: #333;
70
-      color: #FFF;*/
71
-    background-color: #555;
72
-      color: #DDD;
73
-    border-right: 1px solid #CCC;
74
 
61
 
75
-  }
62
+.content__wrapper {
63
+  width: auto;
64
+  margin: 0;
76
 }
65
 }
66
+
77
 .fixed-width-sidebar {
67
 .fixed-width-sidebar {
78
-  width: auto;
68
+  width: auto !important;
79
   min-width: 260px;
69
   min-width: 260px;
80
   max-width: 50%;
70
   max-width: 50%;
81
 }
71
 }
82
 
72
 
83
-.content__wrapper {
84
-  width: auto;
85
-  margin: 0 260px; /* When changing this value, also change the corresponding in main.js */
86
-}
87
 .content__data {
73
 .content__data {
88
   padding: 0 15px;
74
   padding: 0 15px;
89
 }
75
 }
93
   right: 0;
79
   right: 0;
94
   overflow-x: visible;
80
   overflow-x: visible;
95
   overflow-y: auto;
81
   overflow-y: auto;
96
-    background-color: #F5F5F5;
97
-    border-left: 1px solid #CCC;
82
+  background-color: #F5F5F5;
83
+  border-left: 1px solid #CCC;
98
 }
84
 }
99
 .navbar-right {
85
 .navbar-right {
100
   margin-right: 0px;
86
   margin-right: 0px;
101
 }
87
 }
88
+.dropdown-toggle {
89
+  margin-right: 15px;
90
+}
102
 
91
 
103
 /* Sidebar navigation */
92
 /* Sidebar navigation */
104
 .nav-sidebar {
93
 .nav-sidebar {
120
 .header__navbar__switch-mode {
109
 .header__navbar__switch-mode {
121
   float: right;
110
   float: right;
122
   display: inline-block;
111
   display: inline-block;
123
-  padding: 15px;
124
   cursor: pointer;
112
   cursor: pointer;
125
 }
113
 }
126
 .header__navbar__switch-mode > i {
114
 .header__navbar__switch-mode > i {
468
   font-size: 14px;
456
   font-size: 14px;
469
 }
457
 }
470
 
458
 
471
-.content__home {
472
-  padding: 0 15px;
473
-}
474
-
475
 .workspace__wrapper {
459
 .workspace__wrapper {
476
   padding: 0 15px;
460
   padding: 0 15px;
477
 }
461
 }
538
   border-bottom-width: 0px;
522
   border-bottom-width: 0px;
539
   border-top-left-radius: 5px;
523
   border-top-left-radius: 5px;
540
   border-top-right-radius: 5px;
524
   border-top-right-radius: 5px;
525
+  max-width: 36%;
541
   text-align: center;
526
   text-align: center;
542
   font-weight: bold;
527
   font-weight: bold;
543
   vertical-align: bottom;
528
   vertical-align: bottom;
607
   background-color: #bce8f1;
592
   background-color: #bce8f1;
608
   color: #31708f;
593
   color: #31708f;
609
 }
594
 }
595
+
596
+@media (max-width: 999px) {
597
+  body {
598
+    padding-top: 40px;
599
+  }
600
+  .navbar {
601
+    min-height: 40px;
602
+  }
603
+  .navbar, .navbar-brand > img {
604
+    height: 40px;
605
+  }
606
+  #search-form {
607
+    margin: 0;
608
+    padding: 8px 5px;
609
+  }
610
+  #search-form input {
611
+    padding: 3px 10px;
612
+    line-height: 15px;
613
+    font-size: 13px;
614
+    height: auto;
615
+  }
616
+  .navbar-nav > li > a, .header__navbar__switch-mode {
617
+    padding: 10px 5px;
618
+    font-size: 13px;
619
+    line-height: 20px;
620
+  }
621
+  #sidebar-right .btn {
622
+    font-size: 13px;
623
+    padding: 5px;
624
+  }
625
+  .content__home__tab__item, .content__home__tab__item.active {
626
+    max-width: 165px;
627
+  }
628
+  .content__home__tab__item-news {
629
+    right: -20px;
630
+  }
631
+}
632
+
633
+@media (max-width: 767px) {
634
+  .navbar-brand {
635
+    height: auto;
636
+  }
637
+  .navbar-toggle {
638
+    margin: 0;
639
+  }
640
+  .navbar-collapse {
641
+    background-color: #555;
642
+  }
643
+  .navbar-nav > li > a {
644
+    padding: 3px 10px;
645
+  }
646
+  #search-form {
647
+    padding: 8px 10px 0px 10px;
648
+  }
649
+  .navbar-nav .open .dropdown-menu > li > a {
650
+    color: #ddd;
651
+  }
652
+  .navbar-toggle {
653
+    margin-right: 15px;
654
+  }
655
+  .navbar-right {
656
+    margin-right: -15px;
657
+  }
658
+  .content__wrapper {
659
+    margin: 0;
660
+  }
661
+  .content__wrapper {
662
+    margin: 0;
663
+  }
664
+  .content__title__subtitle-home-hidden-xs > div > p { /* remove the "welcome username" msg from homepage  */
665
+    display: none;
666
+  }
667
+  .content__home__tab__item {
668
+    display: block;
669
+    width: auto;
670
+    max-width: 100%;
671
+    padding: 10px 25px;
672
+    border-radius: 0px;
673
+    text-align: left;
674
+  }
675
+  .content__home__tab__item, .content__home__tab__item.active {
676
+    max-width: 100%;
677
+    padding: 10px 25px;
678
+    border: 0px;
679
+  }
680
+  .content__home__tab-wrapper {
681
+    border: 10px solid;
682
+    border-width: 0px 0px 0px 10px;
683
+  }
684
+  .content__home__tab-wrapper.recent_activity {
685
+    border-color: #faebcc;
686
+  }
687
+  .content__home__tab-wrapper.unread {
688
+    border-color: #d6e9c6;
689
+  }
690
+  .content__home__tab-wrapper.workspace {
691
+    border-color: #bce8f1;
692
+  }
693
+  .panel-warning, .panel-success, .panel-info {
694
+    border-top-width: 0px;
695
+    border-left-width: 10px;
696
+  }
697
+}
698
+
699
+@media (min-width: 768px) {
700
+  .sidebar {
701
+    display: block;
702
+    position: fixed;
703
+    top: 41px;
704
+    bottom: 0;
705
+    left: 0;
706
+    width: 130px;
707
+    padding: 10px;
708
+    z-index: 1000;
709
+    overflow-x: hidden;
710
+    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
711
+    background-color: #555;
712
+    color: #DDD;
713
+    border-right: 1px solid #CCC;
714
+  }
715
+  .content__wrapper.edit-mode-margin {
716
+    margin: 0 130px;
717
+  }
718
+  .fixed-width-sidebar {
719
+    min-width: 130px;
720
+  }
721
+  .content__home {
722
+    padding: 0 5px;
723
+  }
724
+}
725
+@media (min-width: 1000px) {
726
+  .sidebar {
727
+    width: 170px;
728
+    top: 51px;
729
+  }
730
+  .content__wrapper.edit-mode-margin {
731
+    margin: 0 170px;
732
+  }
733
+  .fixed-width-sidebar {
734
+    min-width: 170px;
735
+  }
736
+  #sidebar-right .btn {
737
+    font-size: 16px;
738
+    padding: 10px;
739
+  }
740
+  .content__home {
741
+    padding: 0 5px;
742
+  }
743
+  .header__navbar__switch-mode {
744
+    padding: 15px;
745
+  }
746
+}
747
+@media (min-width: 1200px) {
748
+  .sidebar {
749
+    width: 260px;
750
+    padding: 20px;
751
+  }
752
+  #sidebar-right .btn {
753
+    font-size: 1.2em;
754
+    padding: 10px;
755
+  }
756
+  .content__wrapper.edit-mode-margin {
757
+    margin: 0 260px;
758
+  }
759
+  .fixed-width-sidebar {
760
+    min-width: 260px;
761
+  }
762
+  .content__home {
763
+    padding: 0 15px;
764
+  }
765
+}

+ 8 - 7
tracim/tracim/public/assets/js/main.js 查看文件

20
     $('.content__home__tab__item.unread, .content__home__tab__item.recent_activity, .content__home__tab__item.workspace').removeClass('active')
20
     $('.content__home__tab__item.unread, .content__home__tab__item.recent_activity, .content__home__tab__item.workspace').removeClass('active')
21
     homeTabList.forEach(function (item) { $(item).css('display', 'none') })
21
     homeTabList.forEach(function (item) { $(item).css('display', 'none') })
22
   })
22
   })
23
-  $('.content__home__tab__item.unread').click(function () {
24
-    $(this).addClass('active')
25
-    $('#unread-content-panel').css('display', 'block') })
26
   $('.content__home__tab__item.recent_activity').click(function () {
23
   $('.content__home__tab__item.recent_activity').click(function () {
27
-    $(this).addClass('active')
24
+    $(this).addClass('active').parent().removeClass('unread recent_activity workspace').addClass('recent_activity')
28
     $('#recent-activity-panel').css('display', 'block')
25
     $('#recent-activity-panel').css('display', 'block')
29
   })
26
   })
27
+  $('.content__home__tab__item.unread').click(function () {
28
+    $(this).addClass('active').parent().removeClass('unread recent_activity workspace').addClass('unread')
29
+    $('#unread-content-panel').css('display', 'block')
30
+  })
30
   $('.content__home__tab__item.workspace').click(function () {
31
   $('.content__home__tab__item.workspace').click(function () {
31
-    $(this).addClass('active')
32
+    $(this).addClass('active').parent().removeClass('unread recent_activity workspace').addClass('workspace')
32
     $('#workspaces-panel').css('display', 'block')
33
     $('#workspaces-panel').css('display', 'block')
33
   })
34
   })
34
 
35
 
41
   $('.header__navbar').on('click', '.header__navbar__switch-mode.switch-read-mode', function () {
42
   $('.header__navbar').on('click', '.header__navbar__switch-mode.switch-read-mode', function () {
42
     $(this).removeClass('switch-read-mode').addClass('switch-work-mode').html('<i class="fa fa-edit fa-fw"></i> ' + __('btnWorkMode'))
43
     $(this).removeClass('switch-read-mode').addClass('switch-work-mode').html('<i class="fa fa-edit fa-fw"></i> ' + __('btnWorkMode'))
43
     $('#sidebar-left, #sidebar-right').hide()
44
     $('#sidebar-left, #sidebar-right').hide()
44
-    $('.content__wrapper').css({margin: '0'})
45
+    $('.content__wrapper').removeClass('edit-mode-margin')
45
   })
46
   })
46
   $('.header__navbar').on('click', '.header__navbar__switch-mode.switch-work-mode', function () {
47
   $('.header__navbar').on('click', '.header__navbar__switch-mode.switch-work-mode', function () {
47
     $(this).removeClass('switch-work-mode').addClass('switch-read-mode').html('<i class="fa fa-eye fa-fw"></i> ' + __('btnReadMode'))
48
     $(this).removeClass('switch-work-mode').addClass('switch-read-mode').html('<i class="fa fa-eye fa-fw"></i> ' + __('btnReadMode'))
48
     $('#sidebar-left, #sidebar-right').show()
49
     $('#sidebar-left, #sidebar-right').show()
49
-    $('.content__wrapper').css({margin: '0 260px'})
50
+    $('.content__wrapper').addClass('edit-mode-margin')
50
   })
51
   })
51
 
52
 
52
   // add select2 for admin/workspace/<id> for user selection
53
   // add select2 for admin/workspace/<id> for user selection

+ 7 - 5
tracim/tracim/templates/home.mak 查看文件

12
 
12
 
13
 <%def name="TITLE_ROW()">
13
 <%def name="TITLE_ROW()">
14
     <div class="content__title">
14
     <div class="content__title">
15
-        ${ROW.TITLE_ROW(_('My Dashboard'), 'fa-home', '', 't-user-color', _('Welcome to your home, {username}.').format(username=fake_api.current_user.name))}
15
+        ${ROW.TITLE_ROW(_('My Dashboard'), 'fa-home', 'content__title__subtitle-home-hidden-xs', 't-user-color', _('Welcome to your home, {username}.').format(username=fake_api.current_user.name))}
16
     </div>
16
     </div>
17
 </%def>
17
 </%def>
18
 
18
 
32
 </%def>
32
 </%def>
33
 
33
 
34
 <div class="content__home">
34
 <div class="content__home">
35
-    <div class="content__home__tab-wrapper">
35
+    <div class="content__home__tab-wrapper recent_activity">
36
         <div class="content__home__tab__item recent_activity active">
36
         <div class="content__home__tab__item recent_activity active">
37
             <i class="fa fa-fw fa-line-chart"></i>${_('Recent Activity')}
37
             <i class="fa fa-fw fa-line-chart"></i>${_('Recent Activity')}
38
-            % if fake_api.last_actives.contents[0]:
39
-              <span class="content__home__tab__item-lastactivity">[${fake_api.last_actives.contents[0].last_activity.delta}]</span>
38
+            % if fake_api.last_actives.contents:
39
+                % if fake_api.last_actives.contents[0]:
40
+                  <span class="content__home__tab__item-lastactivity">[${fake_api.last_actives.contents[0].last_activity.delta}]</span>
41
+                % endif
40
             % endif
42
             % endif
41
         </div>
43
         </div>
42
         <div class="content__home__tab__item unread">
44
         <div class="content__home__tab__item unread">
43
-            <i class="fa fa-fw fa-eye-slash"></i>${_('Not Read')}
44
             % if fake_api.last_unread.nb > 0:
45
             % if fake_api.last_unread.nb > 0:
45
               <div class="content__home__tab__item-news fa-stack">
46
               <div class="content__home__tab__item-news fa-stack">
46
                 <i class="fa fa-bookmark fa-stack-1x"></i>
47
                 <i class="fa fa-bookmark fa-stack-1x"></i>
53
                 </i>
54
                 </i>
54
               </div>
55
               </div>
55
             % endif
56
             % endif
57
+            <i class="fa fa-fw fa-eye-slash"></i>${_('Not Read')}
56
         </div>
58
         </div>
57
         <div class="content__home__tab__item workspace">
59
         <div class="content__home__tab__item workspace">
58
             <i class="fa fa-bank"></i>${_('My workspaces')}
60
             <i class="fa fa-bank"></i>${_('My workspaces')}

+ 2 - 2
tracim/tracim/templates/index.mak 查看文件

17
             </div>
17
             </div>
18
 
18
 
19
             <div class="row">
19
             <div class="row">
20
-                <div class="col-sm-offset-3 col-sm-2">
20
+                <div class="col-sm-offset-3 col-sm-2 hidden-xs">
21
                     <a class="thumbnail">
21
                     <a class="thumbnail">
22
                         <img src="${CFG.WEBSITE_HOME_IMAGE_URL}" alt="">
22
                         <img src="${CFG.WEBSITE_HOME_IMAGE_URL}" alt="">
23
                     </a>
23
                     </a>
24
                     <p>${CFG.WEBSITE_HOME_TAG_LINE|n}</p>
24
                     <p>${CFG.WEBSITE_HOME_TAG_LINE|n}</p>
25
-                    
25
+
26
 
26
 
27
                 </div>
27
                 </div>
28
                 <div class="col-sm-4">
28
                 <div class="col-sm-4">

+ 6 - 9
tracim/tracim/templates/master_anonymous.mak 查看文件

30
         <div class="container-fluid">
30
         <div class="container-fluid">
31
             ${self.main_menu()}
31
             ${self.main_menu()}
32
             ${self.content_wrapper()}
32
             ${self.content_wrapper()}
33
-            <div id="tracim-footer-separator"></div>
33
+            <div id="tracim-footer-separator hidden-xs"></div>
34
         </div>
34
         </div>
35
         ${self.footer()}
35
         ${self.footer()}
36
 
36
 
67
 <%def name="title()"></%def>
67
 <%def name="title()"></%def>
68
 
68
 
69
 <%def name="footer()">
69
 <%def name="footer()">
70
-    <div class="pod-footer footer hidden-tablet hidden-phone text-center">
70
+    <div class="pod-footer footer hidden-tablet hidden-phone text-center hidden-xs">
71
         <p>
71
         <p>
72
             <a href="http://trac.im">${_('Create your own collaborative workspace on trac.im')}</a> &mdash;
72
             <a href="http://trac.im">${_('Create your own collaborative workspace on trac.im')}</a> &mdash;
73
             copyright &copy; 2013 - ${h.current_year()} tracim project.
73
             copyright &copy; 2013 - ${h.current_year()} tracim project.
80
     <div class="navbar navbar-fixed-top navbar-fixed-top-transparent" role="navigation">
80
     <div class="navbar navbar-fixed-top navbar-fixed-top-transparent" role="navigation">
81
         <div class="container-fluid">
81
         <div class="container-fluid">
82
             <div class="navbar-header">
82
             <div class="navbar-header">
83
-                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
84
-                    <span class="sr-only">Toggle navigation</span>
85
-                    <span class="icon-bar"></span>
86
-                    <span class="icon-bar"></span>
87
-                    <span class="icon-bar"></span>
88
-                </button>
83
+                <!--button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
84
+                    <i class="fa fa-bars"></i>
85
+                </button-->
89
                 <a class="navbar-brand" href="${tg.url('/')}">
86
                 <a class="navbar-brand" href="${tg.url('/')}">
90
-                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" style="margin: -13px 0.5em 0 -13px;"/>
87
+                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" />
91
                 </a>
88
                 </a>
92
             </div>
89
             </div>
93
         </div>
90
         </div>

+ 16 - 20
tracim/tracim/templates/master_authenticated.mak 查看文件

60
 <%def name="title()">  </%def>
60
 <%def name="title()">  </%def>
61
 
61
 
62
 <%def name="footer()">
62
 <%def name="footer()">
63
-    <div class="pod-footer footer hidden-tablet hidden-phone text-center">
63
+    <div class="pod-footer footer hidden-tablet hidden-phone text-center hidden-xs">
64
         <p>
64
         <p>
65
             <a href="http://trac.im">${_('Create your own collaborative workspace on trac.im')}</a> &mdash;
65
             <a href="http://trac.im">${_('Create your own collaborative workspace on trac.im')}</a> &mdash;
66
             copyright &copy; 2013 - ${h.current_year()} tracim project.
66
             copyright &copy; 2013 - ${h.current_year()} tracim project.
101
 
101
 
102
         <div class="">
102
         <div class="">
103
             <div class="navbar-header">
103
             <div class="navbar-header">
104
-                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
105
-                    <span class="sr-only">Toggle navigation</span>
106
-                    <span class="icon-bar"></span>
107
-                    <span class="icon-bar"></span>
108
-                    <span class="icon-bar"></span>
104
+                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
105
+                    <i class="fa fa-bars"></i>
109
                 </button>
106
                 </button>
110
                 <a class="navbar-brand" href="${tg.url('/')}">
107
                 <a class="navbar-brand" href="${tg.url('/')}">
111
-##                  <img src="${tg.url('/assets/img/tracim.png')}" class="pull-left" style="border: 1px solid #F5F5F5; height: 48px; margin: -13px 0.5em 0 0;"/>
112
-                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" style="height: 48px; margin: -13px 0.5em 0 -13px;"/>
108
+                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" />
113
                 </a>
109
                 </a>
114
             </div>
110
             </div>
115
 
111
 
120
                             <a href="${tg.url('/home')}">${TIM.FA('fa-home fa-lg')} ${_('My Home')}</a>
116
                             <a href="${tg.url('/home')}">${TIM.FA('fa-home fa-lg')} ${_('My Home')}</a>
121
                         </li>
117
                         </li>
122
                         <li class="header__navbar__list__item">
118
                         <li class="header__navbar__list__item">
123
-                            <a href="${tg.url('/calendar')}">${TIM.FA('fa-calendar')} ${_('Calendar')}</a>
119
+                            <a href="${tg.url('/calendar')}">${TIM.FA('fa-calendar fa-fw')} ${_('Calendar')}</a>
124
                         </li>
120
                         </li>
125
                         ${NAVBAR_MENU.ADMIN_ITEMS()}
121
                         ${NAVBAR_MENU.ADMIN_ITEMS()}
126
                     </ul>
122
                     </ul>
132
 
128
 
133
                         <form id="search-form" class="navbar-form navbar-left" role="search" action="${tg.url('/search?')}">
129
                         <form id="search-form" class="navbar-form navbar-left" role="search" action="${tg.url('/search?')}">
134
                             <div class="form-group">
130
                             <div class="form-group">
135
-                                <input type="text" class="form-control" placeholder="${_('Search for...')}" name="keywords" value="${','.join(search.keywords) if search else ''}">
136
-                                <i class="fa fa-search t-less-visible" style="margin-left: -2em;" onclick="$('#search-form').submit()"></i>
131
+                                <input type="text" class="form-control" placeholder="${_('Search for...')}" name="keywords" value="${','.join(search.keywords) if search else ''}" />
132
+                                <i class="fa fa-search t-less-visible hidden-xs" style="margin-left: -2em;" onclick="$('#search-form').submit()"></i>
137
                             </div>
133
                             </div>
138
                             ## <button type="submit" class="btn btn-default">${_('Search')}</button>
134
                             ## <button type="submit" class="btn btn-default">${_('Search')}</button>
139
                         </form>
135
                         </form>
140
 
136
 
141
                         % if fake_api.current_user.profile.id>=8: #2:
137
                         % if fake_api.current_user.profile.id>=8: #2:
142
                             <li class="dropdown">
138
                             <li class="dropdown">
143
-                              <a href="#" class="dropdown-toggle" data-toggle="dropdown">${TIM.FA('fa-lg fa-cogs')} ${_('Admin')} <b class="caret"></b></a>
139
+                              <a href="#" class="dropdown-toggle" data-toggle="dropdown">${TIM.FA('fa-lg fa-cogs fa-fw')} ${_('Admin')} <b class="caret"></b></a>
144
                               <ul class="dropdown-menu">
140
                               <ul class="dropdown-menu">
145
-                                <li><a href="${tg.url('/admin/users')}">${TIM.FA('fa-users tracim-less-visible')} ${_('Users')}</a></li>
146
-                                <li><a href="${tg.url('/admin/workspaces')}">${TIM.FA('fa-bank tracim-less-visible')} ${_('Workspaces')}</a></li>
141
+                                <li><a href="${tg.url('/admin/users')}">${TIM.FA('fa-users fa-fw tracim-less-visible')} ${_('Users')}</a></li>
142
+                                <li><a href="${tg.url('/admin/workspaces')}">${TIM.FA('fa-bank fa-fw tracim-less-visible')} ${_('Workspaces')}</a></li>
147
 ## TODO - D.A. - 2014-10-20 - Restore global configuration screen
143
 ## TODO - D.A. - 2014-10-20 - Restore global configuration screen
148
 ##                                <li class="divider" role="presentation"></li>
144
 ##                                <li class="divider" role="presentation"></li>
149
 ##                                <li><a href="${tg.url('/admin/configuration')}">${TIM.ICO(16, 'categories/preferences-system')} ${_('Global configuration')}</a></li>
145
 ##                                <li><a href="${tg.url('/admin/configuration')}">${TIM.ICO(16, 'categories/preferences-system')} ${_('Global configuration')}</a></li>
153
 
149
 
154
                         % if False and h.is_debug_mode():
150
                         % if False and h.is_debug_mode():
155
                             <li class="dropdown text-danger" >
151
                             <li class="dropdown text-danger" >
156
-                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">${TIM.FA('fa-warning t-orange')} Debug <b class="caret"></b></a>
152
+                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">${TIM.FA('fa-warning t-orange fa-fw')} Debug <b class="caret"></b></a>
157
                                 <ul class="dropdown-menu">
153
                                 <ul class="dropdown-menu">
158
                                     <li><a class="text-danger" href=""><strong>${_('you MUST desactivate debug in production')}</strong></a></li>
154
                                     <li><a class="text-danger" href=""><strong>${_('you MUST desactivate debug in production')}</strong></a></li>
159
                                     <li class="divider" role="presentation"></li>
155
                                     <li class="divider" role="presentation"></li>
160
                                     <li><a href="${tg.url('/debug/environ')}">${TIM.FA('fa-globe fa-fw t-less-visible')} request.environ</a></li>
156
                                     <li><a href="${tg.url('/debug/environ')}">${TIM.FA('fa-globe fa-fw t-less-visible')} request.environ</a></li>
161
                                     <li><a href="${tg.url('/debug/identity')}">${TIM.FA('fa-user fa-fw t-less-visible')} request.identity</a></li>
157
                                     <li><a href="${tg.url('/debug/identity')}">${TIM.FA('fa-user fa-fw t-less-visible')} request.identity</a></li>
162
                                     <li class="divider" role="presentation"></li>
158
                                     <li class="divider" role="presentation"></li>
163
-                                    <li><a href="${tg.url('/debug/iconset-fa')}">${TIM.FA('fa-file-image-o t-less-visible')} Icon set - Font Awesome</a></li>
164
-                                    <li><a href="${tg.url('/debug/iconset-tango')}">${TIM.FA('fa-file-image-o t-less-visible')} Icon set - Tango Icons</a></li>
159
+                                    <li><a href="${tg.url('/debug/iconset-fa')}">${TIM.FA('fa-file-image-o fa-fw t-less-visible')} Icon set - Font Awesome</a></li>
160
+                                    <li><a href="${tg.url('/debug/iconset-tango')}">${TIM.FA('fa-file-image-o fa-fw t-less-visible')} Icon set - Tango Icons</a></li>
165
                                 </ul>
161
                                 </ul>
166
                             </li>
162
                             </li>
167
                         % endif
163
                         % endif
168
                         <li class="dropdown">
164
                         <li class="dropdown">
169
                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">
165
                             <a href="#" class="dropdown-toggle" data-toggle="dropdown">
170
-                                ${TIM.FA('fa-lg fa-user')} ${fake_api.current_user.name}
166
+                                ${TIM.FA('fa-lg fa-fw fa-user')} ${fake_api.current_user.name}
171
 
167
 
172
                             </a>
168
                             </a>
173
                             <ul class="dropdown-menu pull-right">
169
                             <ul class="dropdown-menu pull-right">
194
 ##                    </li>
190
 ##                    </li>
195
                 </ul>
191
                 </ul>
196
 
192
 
197
-                <div class="header__navbar__switch-mode switch-read-mode">
198
-                    ${TIM.FA('fa-eye')} ${_('Read mode')}
193
+                <div class="header__navbar__switch-mode switch-read-mode hidden-xs">
194
+                    ${TIM.FA('fa-eye fa-fw')} ${_('Read mode')}
199
                 </div>
195
                 </div>
200
 
196
 
201
             </div>
197
             </div>

+ 1 - 1
tracim/tracim/templates/master_authenticated_left_treeview.mak 查看文件

32
     </div> <!-- # End of side bar right -->
32
     </div> <!-- # End of side bar right -->
33
     ## SIDEBAR RIGHT [END]
33
     ## SIDEBAR RIGHT [END]
34
 
34
 
35
-    <div class="content__wrapper">
35
+    <div class="content__wrapper edit-mode-margin">
36
         ${self.TITLE_ROW()}
36
         ${self.TITLE_ROW()}
37
         ${self.body()}
37
         ${self.body()}
38
     </div>
38
     </div>

+ 1 - 1
tracim/tracim/templates/master_authenticated_left_treeview_right_toolbar.mak 查看文件

23
     </div> <!-- # End of side bar right -->
23
     </div> <!-- # End of side bar right -->
24
     ## SIDEBAR RIGHT [END]
24
     ## SIDEBAR RIGHT [END]
25
 
25
 
26
-    <div class="content__wrapper">
26
+    <div class="content__wrapper edit-mode-margin">
27
         ${self.TITLE_ROW()}
27
         ${self.TITLE_ROW()}
28
         ${self.body()}
28
         ${self.body()}
29
     </div>
29
     </div>

+ 3 - 6
tracim/tracim/templates/master_no_toolbar_no_login.mak 查看文件

81
 <%def name="title()">  </%def>
81
 <%def name="title()">  </%def>
82
 
82
 
83
 <%def name="footer()">
83
 <%def name="footer()">
84
-    <div class="footer hidden-tablet hidden-phone text-center">
84
+    <div class="footer hidden-tablet hidden-phone text-center hidden-xs">
85
         <p class="pod-blue">
85
         <p class="pod-blue">
86
             <i>pod &mdash; ${_("collaborate today, capitalize for tomorrow")}</i>
86
             <i>pod &mdash; ${_("collaborate today, capitalize for tomorrow")}</i>
87
 
87
 
97
         <div class="container-fluid">
97
         <div class="container-fluid">
98
             <div class="navbar-header">
98
             <div class="navbar-header">
99
                 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
99
                 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
100
-                    <span class="sr-only">Toggle navigation</span>
101
-                    <span class="icon-bar"></span>
102
-                    <span class="icon-bar"></span>
103
-                    <span class="icon-bar"></span>
100
+                    <i class="fa fa-bars"></i>
104
                 </button>
101
                 </button>
105
                 <a class="navbar-brand" href="#">
102
                 <a class="navbar-brand" href="#">
106
-                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" style="border: 1px solid #F5F5F5; height: 48px; margin: -13px 0.5em 0 0;"/>
103
+                  <img src="${tg.url('/assets/img/logo.png')}" class="pull-left" />
107
                 </a>
104
                 </a>
108
             </div>
105
             </div>
109
             <div class="navbar-collapse collapse">
106
             <div class="navbar-collapse collapse">

+ 11 - 29
tracim/tracim/templates/user_toolbars.mak 查看文件

37
 
37
 
38
 <%def name="USER_ME(current_user)">
38
 <%def name="USER_ME(current_user)">
39
     ## SIDEBAR RIGHT
39
     ## SIDEBAR RIGHT
40
-    <div>
41
-        <div class="btn-group btn-group-vertical">
42
-            <%
43
-                user_edit_url = tg.url('/user/{}/edit'.format(current_user.id), {'next_url': '/home'})
44
-                user_password_edit_url = tg.url('/user/{}/password/edit'.format(current_user.id))
45
-            %>
46
-            <a title="${_('Edit my profile')}" class="btn btn-default edit-profile-btn" data-toggle="modal" data-target="#user-edit-modal-dialog" data-remote="${user_edit_url}" >${ICON.FA('fa-edit t-less-visible')} ${_('Edit my profile')}</a>
47
-
48
-            % if tmpl_context.auth_is_internal:
49
-                <a title="${_('Change password')}" class="btn btn-default change-password-btn" data-toggle="modal" data-target="#user-edit-password-modal-dialog" data-remote="${user_password_edit_url}" >${ICON.FA('fa-key t-less-visible')} ${_('Password')}</a>
50
-            % endif
51
-
52
-        </div>
53
-        <p></p>
54
-        <h3 class="t-spacer-above" style="margin-top: 1em;">
55
-            <i class="fa fa-flash"></i> ${_('Go to...')}
56
-        </h3>
57
-
58
-        <div class="btn-group btn-group-vertical">
59
-            <%
60
-                user_edit_url = tg.url('/user/{}/edit'.format(current_user.id), {'next_url': '/home'})
61
-                user_password_edit_url = tg.url('/user/{}/password/edit'.format(current_user.id))
62
-            %>
63
-            <a title="${_('Not read')}" class="btn btn-default" href="#unread-content-panel" >${ICON.FA('fa-fw fa-eye-slash t-less-visible')} ${_('Not Read')}</a>
64
-            <a title="${_('Recent Activity')}" class="btn btn-default" href="#recent-activity-panel" >${ICON.FA('fa-fw fa-line-chart t-less-visible')} ${_('Activity')}</a>
65
-            <a title="${_('My Workspaces')}" class="btn btn-default" href="#workspaces-panel" >${ICON.FA('fa-fw fa-bank t-less-visible')} ${_('Spaces')}</a>
66
-        </div>
67
-        <p></p>
68
-    </div> <!-- # End of side bar right -->
40
+    <div class="btn-group btn-group-vertical">
41
+        <%
42
+            user_edit_url = tg.url('/user/{}/edit'.format(current_user.id), {'next_url': '/home'})
43
+            user_password_edit_url = tg.url('/user/{}/password/edit'.format(current_user.id))
44
+        %>
45
+        <a title="${_('Edit my profile')}" class="btn btn-default edit-profile-btn" data-toggle="modal" data-target="#user-edit-modal-dialog" data-remote="${user_edit_url}" >${ICON.FA('fa-edit t-less-visible')} ${_('Edit my profile')}</a>
46
+
47
+        % if tmpl_context.auth_is_internal:
48
+            <a title="${_('Change password')}" class="btn btn-default change-password-btn" data-toggle="modal" data-target="#user-edit-password-modal-dialog" data-remote="${user_password_edit_url}" >${ICON.FA('fa-key t-less-visible')} ${_('Password')}</a>
49
+        % endif
50
+    </div><!-- # End of side bar right -->
69
     ## SIDEBAR RIGHT [END]
51
     ## SIDEBAR RIGHT [END]
70
 </%def>
52
 </%def>
71
 
53