[FIX] website: allow to rename a website page.
Code from delete_page has been spliited (functions, templates, ...) to be re-usable by rename_page Change default input type from website.prompt. Old default value 'text' had no sense, there are no tag <text>.
This commit is contained in:
@@ -224,19 +224,43 @@ class website(osv.osv):
|
||||
})
|
||||
return page_xmlid
|
||||
|
||||
def delete_page(self, cr, uid, view_id, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
def key_to_view_id(self, cr, uid, view_id, context=None):
|
||||
View = self.pool.get('ir.ui.view')
|
||||
view_find = View.search(cr, uid, [
|
||||
return View.search(cr, uid, [
|
||||
('id', '=', view_id),
|
||||
"|", ('website_id', '=', context.get('website_id')), ('website_id', '=', False),
|
||||
('page', '=', True),
|
||||
('type', '=', 'qweb')
|
||||
], context=context)
|
||||
|
||||
def delete_page(self, cr, uid, view_id, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
View = self.pool.get('ir.ui.view')
|
||||
view_find = self.key_to_view_id(cr, uid, view_id, context=context)
|
||||
if view_find:
|
||||
View.unlink(cr, uid, view_find, context=context)
|
||||
|
||||
def rename_page(self, cr, uid, view_id, new_name, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
View = self.pool.get('ir.ui.view')
|
||||
view_find = self.key_to_view_id(cr, uid, view_id, context=context)
|
||||
if view_find:
|
||||
v = View.browse(cr, uid, view_find, context=context)
|
||||
|
||||
new_name = slugify(new_name, max_length=50)
|
||||
# Prefix by module if not already done by end user
|
||||
prefix = v.key.split('.')[0]
|
||||
if not new_name.startswith(prefix):
|
||||
new_name = "%s.%s" % (prefix, new_name)
|
||||
|
||||
View.write(cr, uid, view_find, {
|
||||
'key': new_name,
|
||||
'arch_db': v.arch_db.replace(v.key, new_name, 1)
|
||||
})
|
||||
return new_name
|
||||
|
||||
def page_search_dependencies(self, cr, uid, view_id=False, context=None):
|
||||
dep = {}
|
||||
if not view_id:
|
||||
|
||||
@@ -70,6 +70,40 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
rename_page: function() {
|
||||
var self = this;
|
||||
var context = website.get_context();
|
||||
self.mo_id = self.getMainObject().id;
|
||||
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website',
|
||||
method: 'page_search_dependencies',
|
||||
args: [self.mo_id],
|
||||
kwargs: {
|
||||
context: context
|
||||
},
|
||||
}).then(function (deps) {
|
||||
website.prompt({
|
||||
id: "editor_rename_page",
|
||||
window_title: _t("Rename Page"),
|
||||
dependencies: deps,
|
||||
}, 'website.rename_page').then(function (val, field, $dialog) {
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website',
|
||||
method: 'rename_page',
|
||||
args: [
|
||||
self.mo_id,
|
||||
val,
|
||||
],
|
||||
kwargs: {
|
||||
context: context
|
||||
},
|
||||
}).then(function (new_name) {
|
||||
window.location = "/page/" + encodeURIComponent(new_name);
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
delete_page: function() {
|
||||
var self = this;
|
||||
var context = website.get_context();
|
||||
@@ -87,7 +121,9 @@
|
||||
id: "editor_delete_page",
|
||||
window_title: _t("Delete Page"),
|
||||
dependencies: deps,
|
||||
init: function() { $('.btn-continue').prop("disabled", true)},
|
||||
}, 'website.delete_page').then(function (val, field, $dialog) {
|
||||
|
||||
if ($dialog.find('input[type="checkbox"]').is(':checked')){
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website',
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
}, options || {});
|
||||
|
||||
var type = _.intersection(Object.keys(options), ['input', 'textarea', 'select']);
|
||||
type = type.length ? type[0] : 'text';
|
||||
type = type.length ? type[0] : 'input';
|
||||
options.field_type = type;
|
||||
options.field_name = options.field_name || options[type];
|
||||
|
||||
|
||||
@@ -46,94 +46,112 @@
|
||||
</t>
|
||||
|
||||
<t t-name="website.prompt">
|
||||
<div class="modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header" t-if="window_title">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="modal-title"><t t-esc="window_title"/></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" role="form" t-att-id="id">
|
||||
<div class="form-group mb0">
|
||||
<label for="page-name" class="col-sm-3 control-label">
|
||||
<t t-esc="field_name"/>:
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input t-if="field_type == 'input'" type="text" class="form-control" required="required"/>
|
||||
<textarea t-if="field_type == 'textarea'" class="form-control" required="required" rows="5"></textarea>
|
||||
<select t-if="field_type == 'select'" class="form-control"></select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary">Continue</button>
|
||||
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||||
<t t-call="website.modal_base">
|
||||
<form class="form-horizontal" role="form" t-att-id="id">
|
||||
<div class="form-group mb0">
|
||||
<label for="page-name" class="col-sm-3 control-label">
|
||||
<t t-esc="field_name"/>:
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input t-if="field_type == 'input'" type="text" class="form-control" required="required"/>
|
||||
<textarea t-if="field_type == 'textarea'" class="form-control" required="required" rows="5"></textarea>
|
||||
<select t-if="field_type == 'select'" class="form-control"></select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<t t-name="website.modal_base">
|
||||
<div class="modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<t t-call="website.modal_header" />
|
||||
<div class="modal-body">
|
||||
<t t-raw="0"/>
|
||||
</div>
|
||||
<t t-call="website.modal_footer" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="website.modal_header">
|
||||
<div class="modal-header" t-if="window_title">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="modal-title"><t t-esc="window_title"/></h3>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="website.delete_page">
|
||||
<div class="modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header" t-if="window_title">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="modal-title"><t t-esc="window_title"/></h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-warning alert-dismissible fade in mt16" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<strong>Be careful !</strong> Some dependencies can exist ...
|
||||
</div>
|
||||
<t t-if="dependencies">
|
||||
<t t-set='tid' t-value='0'/>
|
||||
<t t-foreach="_.keys(dependencies)" t-as="type">
|
||||
<div class="panel-group" role="tablist">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" role="tab" >
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" data-toggle="collapse" t-att-href="'#collapseDependencies'+tid" aria-expanded="false" t-att-aria-controls="'collapseDependencies'+tid">
|
||||
<t t-esc="type"/>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div t-att-id="'collapseDependencies'+tid" class="panel-collapse collapse in" role="tabpanel" aria-expanded="false" >
|
||||
<ul class="list-group">
|
||||
<t t-foreach="dependencies[type]" t-as="error">
|
||||
<li class="list-group-item">
|
||||
<i class='fa fa-share fa-flip-vertical'/>
|
||||
<a t-if="!_.contains(['', '#', false,], error.link)" t-att-href="error.link">
|
||||
<t t-raw="error.text"/>
|
||||
</a>
|
||||
<t t-if="_.contains(['', '#', false,], error.link)" t-raw="error.text"/>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
<div class="panel-footer">Reference(s) found: <t t-esc="dependencies[type].length"/></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<t t-set='tid' t-value='tid+1'/>
|
||||
</t>
|
||||
</t>
|
||||
<form class="form-horizontal" role="form" t-att-id="id">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-offset-2 col-sm-8 text-left alert alert-danger">
|
||||
<input type="checkbox" onchange="$('.btn-continue').prop('disabled', !this.checked)"/> I'm sure, I want to delete this page definitively
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary btn-continue" disabled="disabled">Continue</button>
|
||||
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<t t-name="website.modal_footer">
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary btn-continue">Continue</button>
|
||||
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="website.dependencies">
|
||||
<div class="alert alert-warning alert-dismissible fade in mt16" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<strong>Be careful !</strong> Some dependencies can exist ...
|
||||
</div>
|
||||
<t t-if="dependencies">
|
||||
<t t-set='tid' t-value='0'/>
|
||||
<t t-foreach="_.keys(dependencies)" t-as="type">
|
||||
<div class="panel-group" role="tablist">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" role="tab" >
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" data-toggle="collapse" t-att-href="'#collapseDependencies'+tid" aria-expanded="false" t-att-aria-controls="'collapseDependencies'+tid">
|
||||
<t t-esc="type"/>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div t-att-id="'collapseDependencies'+tid" class="panel-collapse collapse in" role="tabpanel" aria-expanded="false" >
|
||||
<ul class="list-group">
|
||||
<t t-foreach="dependencies[type]" t-as="error">
|
||||
<li class="list-group-item">
|
||||
<i class='fa fa-share fa-flip-vertical'/>
|
||||
<a t-if="!_.contains(['', '#', false,], error.link)" t-att-href="error.link">
|
||||
<t t-raw="error.text"/>
|
||||
</a>
|
||||
<t t-if="_.contains(['', '#', false,], error.link)" t-raw="error.text"/>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
<div class="panel-footer">Reference(s) found: <t t-esc="dependencies[type].length"/></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<t t-set='tid' t-value='tid+1'/>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-name="website.delete_page">
|
||||
<t t-call="website.modal_base">
|
||||
<t t-call="website.dependencies" />
|
||||
<form class="form-horizontal" role="form" t-att-id="id">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-offset-2 col-sm-8 text-left alert alert-danger">
|
||||
<input type="checkbox" onchange="$('.btn-continue').prop('disabled', !this.checked)"/> I'm sure, I want to delete this page definitively
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<t t-name="website.rename_page">
|
||||
<t t-call="website.modal_base">
|
||||
<t t-call="website.dependencies" />
|
||||
<div class="row">
|
||||
<form class="form-horizontal col-sm-offset-2 col-sm-8 alert alert-info" role="form" t-att-id="id">
|
||||
<div class="form-group" >
|
||||
<label for="new_name" class="control-label col-sm-4">New name</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="new_name" placeholder="New Name" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
<li groups="base.group_website_designer"><a data-action="edit_menu" href="#"><span title="Edit Top Menu">Edit Menu</span></a></li>
|
||||
<li class="divider" groups="base.group_website_designer"> </li>
|
||||
<t t-if="deletable">
|
||||
<li groups="base.group_website_designer"><a href="#" data-action="rename_page">Rename Page</a></li>
|
||||
<li groups="base.group_website_designer"><a href="#" data-action="delete_page">Delete Page</a></li>
|
||||
<li class="divider" groups="base.group_website_designer"> </li>
|
||||
</t>
|
||||
|
||||
Reference in New Issue
Block a user