Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Hardirc
2015-03-15 11:47:29 -04:00
12 changed files with 275 additions and 105 deletions
+12 -12
View File
@@ -230,20 +230,20 @@ $(document).on('click', 'a.font_button', function (e) {
<ul class="nav nav-list" rel="pagebookmark" id="filelist"> <ul class="nav nav-list" rel="pagebookmark" id="filelist">
<li><input type="text" placeholder="{{=T('Rapid Search')}}" class="input-block-level typeahead-tw search-query"></li> <li><input type="text" placeholder="{{=T('Rapid Search')}}" class="input-block-level typeahead-tw search-query"></li>
{{auto_complete_list=[]}} {{auto_complete_list=[]}}
<br /> <br />
<div> <div>
<button onclick="jQuery('#form').slideToggle()" class="btn btn-mini">{{=T('Create')}}</button> <button onclick="jQuery('#form').slideToggle()" class="btn btn-mini">{{=T('Create')}}</button>
<br /> <br />
<div id="form"> <div id="form">
<div> <div>
{{=file_create_form('%s/' % app, '')}} {{=file_create_form('%s/' % app, '')}}
</div> </div>
</div> </div>
<script>jQuery('#form').slideToggle()</script> <script>jQuery('#form').slideToggle()</script>
</div> </div>
<br /> <br />
<div id="files_menu"> <div id="files_menu">
{{=LOAD('default', 'files_menu', vars={'app':app}, ajax=True)}} {{=LOAD('default', 'files_menu', vars={'app':app}, ajax=True)}}
</div> </div>
</ul> </ul>
</div> </div>
File diff suppressed because one or more lines are too long
@@ -284,10 +284,6 @@ select.autocomplete {
* application customization * application customization
* add custom rules * add custom rules
*/ */
body {
padding-top: 70px;
}
/* web2py logo */ /* web2py logo */
#web2py-logo { #web2py-logo {
color: #c6cecc; color: #c6cecc;
@@ -317,18 +313,19 @@ body {
color: #428bca; color: #428bca;
} }
form {
max-width: 600px;
}
ul.w2p_list { ul.w2p_list {
margin-left: 0px; margin-left: 0;
} padding-left: 0;
input.date,input.time,input.datetime,input.double,input.integer {
width: 33.333%;
}
.container-full {
margin: 0 auto; width: 100%;
} }
.background { .background {
background: url(../images/background.jpg) no-repeat center center; background: url(../images/background.jpg) no-repeat center center;
} }
html {
background-color: #333;
}
body { body {
padding-top: 50px padding-top: 50px
} }
@@ -347,6 +344,9 @@ footer {
header h1 { header h1 {
color: white !important; text-shadow: 0 0 7px black; color: white !important; text-shadow: 0 0 7px black;
} }
header .jumbotron {
background-color: transparent;
}
.nav a, .btn, .btn-default { .nav a, .btn, .btn-default {
text-shadow: none; font-weight: bold; text-shadow: none; font-weight: bold;
} }
@@ -363,3 +363,181 @@ header h1 {
#w2padmin-btn { #w2padmin-btn {
margin:30px 0 30px 0; margin:30px 0 30px 0;
} }
.hidden {display:none;visibility:visible}
.right {float:right; text-align:right}
.left {float:left; text-align:left}
.center {width:100%; text-align:center; vertical-align:middle}
/* fix ie problem with menu */
td.w2p_fw {padding-bottom:1px}
td.w2p_fl,td.w2p_fw,td.w2p_fc {vertical-align:top}
td.w2p_fl {text-align:left}
td.w2p_fl, td.w2p_fw {padding-right:7px}
td.w2p_fl,td.w2p_fc {padding-top:4px}
div.w2p_export_menu {margin:5px 0}
div.w2p_export_menu a, div.w2p_wiki_tags a, div.w2p_cloud a {margin-left:5px; padding:2px 5px; background-color:#f1f1f1; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;}
/* tr#submit_record__row {border-top:1px solid #E5E5E5} */
#submit_record__row td {padding-top:.5em}
/* Fix */
#auth_user_remember__row label {display:inline}
#web2py_user_form td {vertical-align:top}
div.error_wrapper {display:block}
div.error {
color:red;
padding:5px;
display:inline-block;
}
.copyright {float:left}
#poweredBy {float:right}
/* #MEDIA QUERIES SECTION */
/*
*Grid
*
* The default style for SQLFORM.grid even using jquery-iu or another ui framework
* will look better with the declarations below
* if needed to remove base.css consider keeping these following lines in some css file.
*/
/* .web2py_table {border:1px solid #ccc} */
.web2py_paginator {}
.web2py_grid {width:100%}
.web2py_grid table {width:100%}
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
.web2py_grid .web2py_form td {vertical-align: top;}
.web2py_grid thead th,.web2py_grid tfoot td {
background-color:#EAEAEA;
padding:10px 5px 10px 5px;
}
.web2py_grid tr.odd {background-color:#F9F9F9}
.web2py_grid tr:hover {background-color:#F5F5F5}
/*
.web2py_breadcrumbs a {
line-height:20px; margin-right:5px; display:inline-block;
padding:3px 5px 3px 5px;
font-family:'lucida grande',tahoma,verdana,arial,sans-serif;
color:#3C3C3D;
text-shadow:1px 1px 0 #FFFFFF;
white-space:nowrap; overflow:visible; cursor:pointer;
background:#ECECEC;
border:1px solid #CACACA;
-webkit-border-radius:2px; -moz-border-radius:2px;
-webkit-background-clip:padding-box; border-radius:2px;
outline:none; position:relative; zoom:1; *display:inline;
}
*/
.web2py_console form {
width: 100%;
display: inline;
vertical-align: middle;
margin: 0 0 0 5px;
}
.web2py_console form select {
margin:0;
}
.web2py_search_actions {
float:left;
text-align:left;
}
.web2py_grid .row_buttons {
min-height:25px;
vertical-align:middle;
}
.web2py_grid .row_buttons a {
margin:3px;
}
.web2py_search_actions {
width:100%;
}
.web2py_grid .row_buttons a,
.web2py_paginator ul li a,
.web2py_search_actions a,
.web2py_console input[type=submit],
.web2py_console input[type=button],
.web2py_console button {
line-height:20px;
margin-right:2px; display:inline-block;
padding:3px 5px 3px 5px;
}
.web2py_counter {
margin-top:5px;
margin-right:2px;
width:35%;
float:right;
text-align:right;
}
/*Fix firefox problem*/
.web2py_table {clear:both; display:block}
.web2py_paginator {
padding:5px;
text-align:right;
background-color:#f2f2f2;
}
.web2py_paginator ul {
list-style-type:none;
margin:0px;
padding:0px;
}
.web2py_paginator ul li {
display:inline;
}
.web2py_paginator .current {
font-weight:bold;
}
.web2py_breadcrumbs ul {
list-style:none;
margin-bottom:18px;
}
li.w2p_grid_breadcrumb_elem {
display:inline-block;
}
.web2py_console form { vertical-align: middle; }
.web2py_console input, .web2py_console select,
.web2py_console a { margin: 2px; }
#wiki_page_body {
width: 600px;
height: auto;
min-height: 400px;
}
/* fix some IE problems */
.ie-lte7 .topbar .container {z-index:2}
.ie-lte8 div.flash{ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#222222', endColorstr='#000000', GradientType=0 ); }
.ie-lte8 div.flash:hover {filter:alpha(opacity=25);}
.ie9 #w2p_query_panel {padding-bottom:2px}
.web2py_console .form-control {width: 20%; display: inline;}
.web2py_console #w2p_keywords {width: 50%;}
.web2py_search_actions a, .web2py_console input[type=submit], .web2py_console input[type=button], .web2py_console button { padding: 6px 12px; }
/*
input.date,input.time,input.datetime,input.double,input.integer {
max-width: 300px;
}
*/
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +1,17 @@
{{left_sidebar_enabled,right_sidebar_enabled=False,('message' in globals())}} {{left_sidebar_enabled,right_sidebar_enabled=False,('message' in globals())}}
{{extend 'layout.html'}} {{extend 'layout.html'}}
{{block header}}
<header class="container-fluid background">
<div class="jumbotron text-center">
{{if response.title:}}
<h1>{{=response.title}}
<small>{{=response.subtitle or ''}}</small></h1>
{{pass}}
</div>
</header>
{{end}}
{{if 'message' in globals():}} {{if 'message' in globals():}}
<h2>{{=message}}</h2> <h2>{{=message}}</h2>
<p class="lead">{{=T('How did you get here?')}}</p> <p class="lead">{{=T('How did you get here?')}}</p>
+49 -64
View File
@@ -1,10 +1,4 @@
<!--[if HTML5]><![endif]-->
<!DOCTYPE html> <!DOCTYPE html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
<!--[if IE 7]><html class="ie ie7 ie-lte9 ie-lte8 ie-lte7 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
<!--[if IE 8]><html class="ie ie8 ie-lte9 ie-lte8 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
<!--[if IE 9]><html class="ie9 ie-lte9 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="{{=T.accepted_language or 'en'}}"> <!--<![endif]--> <!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="{{=T.accepted_language or 'en'}}"> <!--<![endif]-->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
@@ -26,23 +20,20 @@
http://google.com/webmasters --> http://google.com/webmasters -->
<meta name="google-site-verification" content=""> <meta name="google-site-verification" content="">
<!-- include stylesheets --> <!-- include stylesheets -->
{{ <link rel="stylesheet" href="{{=URL('static','css/bootstrap.min.css')}}"/>
response.files.insert(0,URL('static','css/web2py.css')) <link rel="stylesheet" href="{{=URL('static','css/bootstrap-theme.min.css')}}"/>
response.files.insert(1,URL('static','css/bootstrap.min.css')) <link rel="stylesheet" href="{{=URL('static','css/web2py-bootstrap3.css')}}"/>
response.files.insert(1,URL('static','css/bootstrap-theme.min.css'))
response.files.insert(4,URL('static','css/web2py-bootstrap3.css'))
}}
<!-- All JavaScript at the bottom, except for Modernizr which enables
HTML5 elements & feature detects -->
<script src="{{=URL('static','js/modernizr.custom.js')}}"></script>
<!-- Favicons -->
<link rel="shortcut icon" href="{{=URL('static','images/favicon.ico')}}" type="image/x-icon"> <link rel="shortcut icon" href="{{=URL('static','images/favicon.ico')}}" type="image/x-icon">
<link rel="apple-touch-icon" href="{{=URL('static','images/favicon.png')}}"> <link rel="apple-touch-icon" href="{{=URL('static','images/favicon.png')}}">
{{include 'web2py_ajax.html'}} <!-- All JavaScript at the bottom, except for Modernizr which enables
{{block head}}{{end}} HTML5 elements & feature detects -->
<script src="{{=URL('static','js/modernizr-2.8.3.min.js')}}"><script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="{{=URL('static','js/respond.min.js')}}"></script> <script src="{{=URL('static','js/respond-1.4.2.min.js')}}"></script>
<![endif]--> <![endif]-->
<!-- Favicons -->
{{include 'web2py_ajax.html'}} <!-- this includes jquery.js, calendar.js/.css and web2py.js -->
{{block head}}{{end}}
{{ {{
# using sidebars need to know what sidebar you want to use # using sidebars need to know what sidebar you want to use
mc0 = 'col-md-12' mc0 = 'col-md-12'
@@ -55,6 +46,7 @@
}} }}
</head> </head>
<body> <body>
<!--[if lt IE 8]><p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p><![endif]-->
<div class="flash alert alert-dismissable">{{=response.flash or ''}}</div> <div class="flash alert alert-dismissable">{{=response.flash or ''}}</div>
<!-- Navbar ======================================= --> <!-- Navbar ======================================= -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
@@ -78,56 +70,49 @@
</div> </div>
</div> </div>
</nav> </nav>
<!-- Masthead ===================================== --> <!-- Masthead ===================================== -->
{{if URL()==URL('default','index'):}} {{block header}}
<header class="container-full"> {{end}}
<div class="jumbotron text-center background">
{{if response.title:}}
<h1>{{=response.title}}
<small>{{=response.subtitle or ''}}</small></h1>
{{pass}}
</div>
</header>
{{pass}}
<!-- Main ========================================= --> <!-- Main ========================================= -->
<main class="container" id="content" role="main"> <!-- Begin page content -->
<div class="row"> <div class="container-fluid">
{{if left_sidebar_enabled:}} {{if left_sidebar_enabled:}}
<!-- left sidebar ---------------------------------------------------------- --> <div class="col-md-3 left-sidebar">
<div class="col-md-3"> {{block left_sidebar}}
{{block left_sidebar}} <h3>Left Sidebar</h3>
{{end left_sidebar}} <p></p>
</div> {{end}}
{{pass}} </div>
<!-- central column -------------------------------------------------------- --> {{pass}}
<div class="{{=middle_column}}">
{{block center_page}}
{{include}}
{{end center_page}}
</div>
{{if right_sidebar_enabled:}}
<!-- right sidebar --------------------------------------------------------- -->
<div class="col-md-3">
{{block right_sidebar}}
{{end right_sidebar}}
</div>
{{pass}}
</div>
</main>
<!-- Footer ======================================= -->
<footer class="container-full"> <div class="{{=middle_column}}">
<div class="row"> {{block center}}
{{block footer}} {{include}}
<div class="col-xs-6"> {{end}}
<p>{{=T('Copyright')}} &#169; {{=request.now.year}}</p> </div>
{{if right_sidebar_enabled:}}
<div class="col-md-3">
{{block right_sidebar}}
<h3>Right Sidebar</h3>
<p></p>
{{end}}
</div> </div>
<div class="col-xs-6"> {{pass}}
<p class="pull-right">{{=T('Powered by')}} <a href="http://www.web2py.com/">web2py</a></p>
</div> </div>
{{end footer}}
{{block footer}} <!-- this is default footer -->
<footer class="footer">
<div class="container-fluid">
<div class="copyright pull-left">{{=T('Copyright')}} &#169; {{=request.now.year}}</div>
<div id="poweredBy" class="pull-right">
{{=T('Powered by')}}
<a href="http://www.web2py.com/">web2py</a>
</div>
</div> </div>
</footer> </footer>
{{end}}
<!-- The javascript =============================== --> <!-- The javascript =============================== -->
<script src="{{=URL('static','js/bootstrap.min.js')}}"></script> <script src="{{=URL('static','js/bootstrap.min.js')}}"></script>
<script src="{{=URL('static','js/web2py-bootstrap3.js')}}"></script> <script src="{{=URL('static','js/web2py-bootstrap3.js')}}"></script>
+1 -1
View File
@@ -20,7 +20,7 @@ try:
os.path.dirname(os.path.abspath(__file__)), "packages", "dal")) os.path.dirname(os.path.abspath(__file__)), "packages", "dal"))
import pydal import pydal
sys.modules['pydal'] = pydal sys.modules['pydal'] = pydal
except: except ImportError:
raise RuntimeError( raise RuntimeError(
"web2py depends on pydal, which apparently you have not installed.\n" + "web2py depends on pydal, which apparently you have not installed.\n" +
"Probably you cloned the repository using git without '--recursive'" + "Probably you cloned the repository using git without '--recursive'" +
+2
View File
@@ -134,6 +134,8 @@ class DAL(pyDAL):
'rows_render': sqlhtml.represent, 'rows_render': sqlhtml.represent,
'rows_xml': sqlhtml.SQLTABLE 'rows_xml': sqlhtml.SQLTABLE
} }
Field = Field
Table = Table
#: add web2py contrib drivers to pyDAL #: add web2py contrib drivers to pyDAL
from pydal.drivers import DRIVERS from pydal.drivers import DRIVERS
+6 -3
View File
@@ -3518,7 +3518,7 @@ class Auth(object):
self.db(self.table_group().id == group_id).delete() self.db(self.table_group().id == group_id).delete()
self.db(self.table_membership().group_id == group_id).delete() self.db(self.table_membership().group_id == group_id).delete()
self.db(self.table_permission().group_id == group_id).delete() self.db(self.table_permission().group_id == group_id).delete()
self.update_groups() if group_id in self.user_groups: del self.user_groups[group_id]
self.log_event(self.messages.del_group_log, dict(group_id=group_id)) self.log_event(self.messages.del_group_log, dict(group_id=group_id))
def id_group(self, role): def id_group(self, role):
@@ -3587,7 +3587,10 @@ class Auth(object):
return record.id return record.id
else: else:
id = membership.insert(group_id=group_id, user_id=user_id) id = membership.insert(group_id=group_id, user_id=user_id)
self.update_groups() if role:
self.user_groups[group_id] = role
else:
self.update_groups()
self.log_event(self.messages['add_membership_log'], self.log_event(self.messages['add_membership_log'],
dict(user_id=user_id, group_id=group_id)) dict(user_id=user_id, group_id=group_id))
return id return id
@@ -3607,7 +3610,7 @@ class Auth(object):
ret = self.db(membership.user_id ret = self.db(membership.user_id
== user_id)(membership.group_id == user_id)(membership.group_id
== group_id).delete() == group_id).delete()
self.update_groups() if group_id in self.user_groups: del self.user_groups[group_id]
return ret return ret
def has_permission( def has_permission(