view release on metacpan or search on metacpan
lib/RapidApp/CoreSchema/Result/NavtreeNode.pm view on Meta::CPAN
on_delete => "CASCADE",
on_update => "CASCADE",
},
);
__PACKAGE__->has_many(
"navtree_nodes",
"RapidApp::CoreSchema::Result::NavtreeNode",
{ "foreign.pid" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"navtree_node_to_roles",
"RapidApp::CoreSchema::Result::NavtreeNodeToRole",
{ "foreign.node_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"saved_states",
"RapidApp::CoreSchema::Result::SavedState",
{ "foreign.node_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
use RapidApp::Util qw(:all);
sub update {
my $self = shift;
# Fail-safe: prevent changes to the 'DUMMY ROOT NODE' (id 0)
if ($self->get_column('id') == 0) {
#warn RED.BOLD "Tried to call update() on the DUMMY ROOT NODE." . CLEAR;
lib/RapidApp/CoreSchema/Result/Role.pm view on Meta::CPAN
"description",
{ data_type => "varchar", is_nullable => 0, size => 255 },
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint("role_name", ["role"]);
__PACKAGE__->has_many(
"user_to_roles",
"RapidApp::CoreSchema::Result::UserToRole",
{ "foreign.role" => "self.role" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"navtree_node_to_roles",
"RapidApp::CoreSchema::Result::NavtreeNodeToRole",
{ "foreign.role" => "self.role" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->load_components('+RapidApp::DBIC::Component::TableSpec');
__PACKAGE__->apply_TableSpec;
__PACKAGE__->TableSpec_set_conf(
title => 'Role',
title_multi => 'Roles',
iconCls => 'ra-icon-user-pref',
multiIconCls => 'ra-icon-user-prefs',
lib/RapidApp/CoreSchema/Result/User.pm view on Meta::CPAN
is_nullable => 1,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint("username", ["username"]);
__PACKAGE__->has_many(
"user_to_roles",
"RapidApp::CoreSchema::Result::UserToRole",
{ "foreign.username" => "self.username" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"saved_states",
"RapidApp::CoreSchema::Result::SavedState",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"sessions",
"RapidApp::CoreSchema::Result::Session",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->load_components('+RapidApp::DBIC::Component::TableSpec');
__PACKAGE__->TableSpec_m2m( roles => "user_to_roles", 'role');
# ----
# TODO/FIXME: This is ugly/global, but works. This virtual column
# provides a column-based interface to set the password, optionally
# passing it through a custom Authen::Passphrase class. The ugly
lib/RapidApp/TableSpec/Role/DBIC.pm view on Meta::CPAN
my $conf = \%opt;
my $rel_data = clone($conf->{relationship_cond_data});
## -- allow override of the associated TabsleSpec cnfs from the relationship attrs:
$conf->{title_multi} = delete $rel_data->{attrs}->{title_multi} if ($rel_data->{attrs}->{title_multi});
$conf->{multiIconCls} = delete $rel_data->{attrs}->{multiIconCls} if ($rel_data->{attrs}->{multiIconCls});
$conf->{open_url_multi} = delete $rel_data->{attrs}->{open_url_multi} if ($rel_data->{attrs}->{open_url_multi});
$conf->{open_url_multi_rs_join_name} = delete $rel_data->{attrs}->{open_url_multi_rs_join_name} if ($rel_data->{attrs}->{open_url_multi_rs_join_name});
delete $rel_data->{attrs}->{cascade_copy};
delete $rel_data->{attrs}->{cascade_delete};
delete $rel_data->{attrs}->{join_type};
delete $rel_data->{attrs}->{accessor};
$rel_data->{attrs}->{join} = [ $rel_data->{attrs}->{join} ] if (
defined $rel_data->{attrs}->{join} and
ref($rel_data->{attrs}->{join}) ne 'ARRAY'
);
if($rel_data->{attrs}->{join}) {
@{$rel_data->{attrs}->{join}} = grep { $_ ne $conf->{open_url_multi_rs_join_name} } @{$rel_data->{attrs}->{join}};
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
// {{{
// default config
/**
* @cfg {String} bubbleCheck
* Check/uncheck also parent nodes. Valid values: none, checked, unchecked, all. Defaults to 'checked'.
*/
bubbleCheck:'checked'
/**
* @cfg {String} cascadeCheck
* Check/uncheck also child nodes. Valid values: none, checked, unchecked, all. Defaults to 'unchecked'.
*/
,cascadeCheck:'unchecked'
/**
* @cfg {Boolean} deepestOnly
* Set this to true for getValue to return only deepest checked node ids. Defaults to false.
*/
,deepestOnly:false
/**
* @cfg {Boolean} expandOnCheck
* Expand the node on check if true. Defaults to true;
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
// call parent initComponent
Ext.ux.tree.CheckTreePanel.superclass.initComponent.apply(this, arguments);
// pass this.baseAttrs and uiProvider down the line
var baseAttrs = Ext.apply({uiProvider:Ext.ux.tree.CheckTreeNodeUI}, this.baseAttrs);
Ext.applyIf(this.loader, {baseAttrs:baseAttrs, preloadChildren:true});
// make sure that nodes are deeply preloaded
if(true === this.loader.preloadChildren) {
this.loader.on('load', function(loader, node) {
node.cascade(function(n) {
loader.doPreload(n);
n.loaded = true;
});
});
}
// create tree filter
if(true === this.filter) {
var Filter = Ext.ux.tree.TreeFilterX ? Ext.ux.tree.TreeFilterX : Ext.tree.TreeFilter;
this.filter = new Filter(this, {autoClear:true});
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
} // eo function initComponent
// }}}
// {{{
/*
* get "value" (array of checked nodes ids)
* @return {Array} Array of chcecked nodes ids
*/
,getValue:function() {
var a = [];
this.root.cascade(function(n) {
if(true === n.attributes.checked) {
if(false === this.deepestOnly || !this.isChildChecked(n)) {
a.push(n.id);
}
}
}, this);
return a;
} // eo function getValue
// {{{
/**
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
return checked;
} // eo function isChildChecked
// }}}
// }}}
// {{{
/*
* clears "value", unchecks all nodes
* @return {Ext.ux.tree.CheckTreePanel} this
*/
,clearValue:function() {
this.root.cascade(function(n) {
var ui = n.getUI();
if(ui && ui.setChecked) {
ui.setChecked(false);
}
});
this.value = [];
return this;
} // eo function clearValue
// }}}
// {{{
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
// }}}
// {{{
/*
* arbitrary attribute of checked nodes (text by default) is joined and separated with this.separator
* @param {String} attr Attribute to serialize
* @return {String} serialized attr of checked nodes
*/
,serialize:function(attr) {
attr = attr || 'text';
var a = [];
this.root.cascade(function(n) {
if(true === n.attributes.checked) {
if(false === this.deepestOnly || !this.isChildChecked(n)) {
a.push(n[attr]);
}
}
}, this);
return a.join(this.separator + ' ');
} // eo function serialize
// }}}
// {{{
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
// }}}
// {{{
/**
* Called when check changes
* @private
*/
,onCheckChange:function() {
var checked = this.isChecked();
var tree = this.node.getOwnerTree();
var bubble = tree.bubbleCheck;
var cascade = tree.cascadeCheck;
if('all' === bubble || (checked && 'checked' === bubble) || (!checked && 'unchecked' === bubble)) {
this.updateParent(checked);
}
if('all' === cascade || (checked && 'checked' === cascade) || (!checked && 'unchecked' === cascade)) {
this.updateChildren(checked);
}
tree.updateHidden();
this.fireEvent('checkchange', this.node, checked);
} // eo function onCheckChange
// }}}
// {{{
/**
* Sets node UI checked/unchecked
share/assets/js/023-Ext.ux.tree.CheckTreePanel.js view on Meta::CPAN
var p = this.node.parentNode;
var ui = p ? p.getUI() : false;
if(ui && ui.setChecked) {
ui.setChecked(checked);
}
} // eo function updateParent
// }}}
// {{{
/**
* Sets children checked/unchecked. Used if cascadeCheck is not 'none'
* @param {Boolean} checked
* @private
*/
,updateChildren:function(checked) {
this.node.eachChild(function(n) {
var ui = n.getUI();
if(ui && ui.setChecked) {
ui.setChecked(checked);
}
});
share/assets/js/080-DataStore.js view on Meta::CPAN
var store = cmp.store;
//store.save();
store.saveAll();
}
},cnf || {}),showtext);
var title_parent = cmp.findParentBy(function(c){
return (c.title && c.setTitle) ? true : false;
},this);
cmp.cascade(function(){
if(!this.store || !this.store.addTrackedToggleFunc){ return; }
this.store.addTrackedToggleFunc(function(store) {
var has_changes = cmp.store.hasAnyPendingChanges();
btn.setDisabled(!has_changes);
// ---- Add/remove '*' suffix from the title based on the saved/unsaved status:
if(title_parent && Ext.isFunction(title_parent.setNewTitle)) {
title_parent.setNewTitle(undefined, has_changes);
}
else { return; }
share/assets/js/080-DataStore.js view on Meta::CPAN
iconCls: 'ra-icon-arrow-undo',
disabled: true,
handler: function(btn) {
var store = cmp.store;
//store.undoChanges.call(store);
store.undoChangesAll.call(store);
}
},cnf || {}),showtext);
cmp.cascade(function(){
if(!this.store || !this.store.addTrackedToggleFunc){ return; }
this.store.addTrackedToggleFunc(function(store) {
if (cmp.store.hasAnyPendingChanges()) {
btn.setDisabled(false);
}
else {
btn.setDisabled(true);
}
});
});
share/assets/js/085-AppTree.js view on Meta::CPAN
n.ui.show();
var p = n.parentNode;
while(p && p !== this.root) {
p.ui.show();
p = p.parentNode;
}
return true;
}
return true;
};
startNode.cascade(f);
if(this.remove){
for(var id in af) {
if(typeof id != "function") {
var n = af[id];
if(n && n.parentNode) {
n.parentNode.removeChild(n);
}
}
}
share/assets/js/499-Ext-RapidApp-Overrides.js view on Meta::CPAN
Ext.override(Ext.ux.tree.CheckTreePanel, {
// This is required in order to get initial checked state:
afterRender:function() {
Ext.ux.tree.CheckTreePanel.superclass.afterRender.apply(this, arguments);
this.updateHidden();
},
// This adds unchecked items to the posted list... Unchecked start with '-', checked start with '+'
getValue:function() {
var a = [];
this.root.cascade(function(n) {
if(true === n.attributes.checked) {
if(false === this.deepestOnly || !this.isChildChecked(n)) {
a.push('+' + n.id);
}
}
else {
a.push('-' + n.id);
}
}, this);
a.shift(); // Remove root element
share/assets/js/500-RapidApp.js view on Meta::CPAN
//Ext.getCmp('dataview').getStore().reload();
//var cmp = this.form.findField('dataview');
//alert(cmp.getXtype());
//this.cascade(function (cmp) {
// try { if (cmp.getXtype()) { alert(cmp.getXtype()); } } catch(err) {}
//});
Ext.Ajax.request(Ext.apply(this.createCallback(o), {
//form:this.form.el.dom, <--- need to remove this line to prevent the form items from being submitted
url:this.getUrl(isGet),
method: method,
headers: o.headers,
//params:!isGet ? this.getParams() : null,
share/assets/js/500-RapidApp.js view on Meta::CPAN
this.on('actioncomplete', function(form,action) {
if(action.type == 'load') {
// save the orig params so they are available later in the jsonsubmit action
form.orig_params = form.getFieldValues();
//find any stores within this container and reload them:
this.cascade(function(cmp) {
var xtype = cmp.getXType();
if(xtype == "dyngrid" || xtype == "dataview") {
Ext.log(cmp.getXType());
try { cmp.getStore().reload(); } catch(err) { Ext.log(err); }
}
});
}
});
share/assets/js/500-RapidApp.js view on Meta::CPAN
Ext.each(this.tabsTpl, function (j) {
for (var i = 0; i < tb.store.getCount(); i++) {
var c = j.render ? c = j.cloneConfig() : Ext.ComponentMgr.create(j);
function myfn() {
Ext.apply(this, tb.store.getAt(i).get(this.applyValues));
}
c.cascade(myfn);
Ext.ComponentMgr.register(c);
tb.items.add(c.id, c);
}
});
}
});
Ext.reg('tabtpl', Ext.ux.TplTabPanel);
share/assets/js/510-AppDV.js view on Meta::CPAN
// New option to enable all links (<a> tags)to be processed. This is not the default
// because this can result is navigating away from the interface which is
// usually not desired. Links with explicit target attributes (i.e. target="_blank")
// are already handled, and relative links are also already handled. The main
// reason for this setting and the fact that it is false by default is due both
// to back-compat, and also the fact that the native Ext.DataView code does not allow
// links through by default when singleSelect or multiSelect is on
allow_all_links: false,
// TODO: make cascade recursive like in Ext.Container
cascade: function(fn,scope,args) {
fn.apply(scope || this, args || [this]);
return this;
},
// collectData() is called whenever rendering/refreshing the template:
collectData: function() {
// New: Save the latest response data within the XTemplate object via the
// reference keys which are now made available via DataStorePlus. This
// enables the template environment to get this data via '[{this.resData}]'
try{
t/02_rapiddbic_opts1.t view on Meta::CPAN
include_colspec => ['*','artistid.name']
},
Genre => {
# Leave persist_immediately on without the add form
# (inserts blank/default rows immediately):
use_add_form => 0,
# No delete confirmations:
confirm_on_destroy => 0
},
Invoice => {
# Delete invoice_lines with invoice (cascade):
destroyable_relspec => ['*','invoice_lines']
},
InvoiceLine => {
# join all columns of all relationships (first-level):
include_colspec => ['*','*.*'],
updatable_colspec => [
'invoiceid','unitprice',
'invoiceid.billing*'
],
},
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Album.pm view on Meta::CPAN
__PACKAGE__->belongs_to(
"artistid",
"TestRA::ChinookDemo::DB::Result::Artist",
{ artistid => "artistid" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
"tracks",
"TestRA::ChinookDemo::DB::Result::Track",
{ "foreign.albumid" => "self.albumid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Artist.pm view on Meta::CPAN
"artistid",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "nvarchar", is_nullable => 1, size => 120 },
);
__PACKAGE__->set_primary_key("artistid");
__PACKAGE__->has_many(
"albums",
"TestRA::ChinookDemo::DB::Result::Album",
{ "foreign.artistid" => "self.artistid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Customer.pm view on Meta::CPAN
"email",
{ data_type => "nvarchar", is_nullable => 0, size => 60 },
"supportrepid",
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
);
__PACKAGE__->set_primary_key("customerid");
__PACKAGE__->has_many(
"invoices",
"TestRA::ChinookDemo::DB::Result::Invoice",
{ "foreign.customerid" => "self.customerid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->belongs_to(
"supportrepid",
"TestRA::ChinookDemo::DB::Result::Employee",
{ employeeid => "supportrepid" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Employee.pm view on Meta::CPAN
"fax",
{ data_type => "nvarchar", is_nullable => 1, size => 24 },
"email",
{ data_type => "nvarchar", is_nullable => 1, size => 60 },
);
__PACKAGE__->set_primary_key("employeeid");
__PACKAGE__->has_many(
"customers",
"TestRA::ChinookDemo::DB::Result::Customer",
{ "foreign.supportrepid" => "self.employeeid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"employees",
"TestRA::ChinookDemo::DB::Result::Employee",
{ "foreign.reportsto" => "self.employeeid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->belongs_to(
"reportsto",
"TestRA::ChinookDemo::DB::Result::Employee",
{ employeeid => "reportsto" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Genre.pm view on Meta::CPAN
"genreid",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "nvarchar", is_nullable => 1, size => 120 },
);
__PACKAGE__->set_primary_key("genreid");
__PACKAGE__->has_many(
"tracks",
"TestRA::ChinookDemo::DB::Result::Track",
{ "foreign.genreid" => "self.genreid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Invoice.pm view on Meta::CPAN
__PACKAGE__->belongs_to(
"customerid",
"TestRA::ChinookDemo::DB::Result::Customer",
{ customerid => "customerid" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
"invoice_lines",
"TestRA::ChinookDemo::DB::Result::InvoiceLine",
{ "foreign.invoiceid" => "self.invoiceid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/MediaType.pm view on Meta::CPAN
"mediatypeid",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "nvarchar", is_nullable => 1, size => 120 },
);
__PACKAGE__->set_primary_key("mediatypeid");
__PACKAGE__->has_many(
"tracks",
"TestRA::ChinookDemo::DB::Result::Track",
{ "foreign.mediatypeid" => "self.mediatypeid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Playlist.pm view on Meta::CPAN
"playlistid",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "nvarchar", is_nullable => 1, size => 120 },
);
__PACKAGE__->set_primary_key("playlistid");
__PACKAGE__->has_many(
"playlist_tracks",
"TestRA::ChinookDemo::DB::Result::PlaylistTrack",
{ "foreign.playlistid" => "self.playlistid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->many_to_many("trackids", "playlist_tracks", "trackid");
__PACKAGE__->meta->make_immutable;
1;
t/var/testapps/TestRA-ChinookDemo/lib/TestRA/ChinookDemo/DB/Result/Track.pm view on Meta::CPAN
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
__PACKAGE__->has_many(
"invoice_lines",
"TestRA::ChinookDemo::DB::Result::InvoiceLine",
{ "foreign.trackid" => "self.trackid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->belongs_to(
"mediatypeid",
"TestRA::ChinookDemo::DB::Result::MediaType",
{ mediatypeid => "mediatypeid" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
"playlist_tracks",
"TestRA::ChinookDemo::DB::Result::PlaylistTrack",
{ "foreign.trackid" => "self.trackid" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->many_to_many("playlistids", "playlist_tracks", "playlistid");
__PACKAGE__->meta->make_immutable;
1;