Smolder
view release on metacpan or search on metacpan
t/data/test_run_bad.tar
t/data/test_run_bad.tar.gz
t/data/test_run_bad_yml.tar.gz
t/data/test_run_good.tar.gz
t/data/test_run_good_yml.tar.gz
t/db-developer.t
t/db-pref.t
t/db-proj_dev.t
t/db-project.t
t/db-smoke_test.t
t/dev_prefs.t
t/developer.t
t/graphs.t
t/proj_admin.t
t/proj_auth.t
t/projects.t
t/public.t
t/public_auth.t
t/smoke_signal.t
t/util.t
templates/Admin/Developers/add.tmpl
htdocs/js/smolder.js view on Meta::CPAN
};
},
// on the preferences form, the project selector should update
// the preferences form with the selected projects preferences
// from the server
'#project_preference_selector': function(element) {
var form = element.form;
// if we start off looking at the default options
if( element.value == form.elements['default_pref_id'].value ) {
Element.show('dev_prefs_sync_button');
// if we want to show some info - Element.show('default_pref_info');
}
element.onchange = function() {
// if we are the default preference, then show the stuff
// that needs to be shown
if( element.value == form.elements['default_pref_id'].value ) {
Element.show('dev_prefs_sync_button');
// if we want to show some info - Element.show('default_pref_info');
} else {
Element.hide('dev_prefs_sync_button');
// if we want to show some info - Element.hide('default_pref_info');
}
// get the preference details from the server
Smolder.show_indicator('pref_indicator');
new Ajax.Request(
'/app/developer_prefs/get_pref_details',
{
parameters: Form.serialize(form),
asynchronous: true,
onComplete: function(response, json) {
// for every value in our JSON response, set that
// same element in the form
$A(['email_type', 'email_freq', 'email_limit']).each(
function(name) {
var elm = form.elements[name];
elm.value = json[name];
htdocs/js/smolder.js view on Meta::CPAN
}
);
Smolder.hide_indicator('pref_indicator');
},
onFailure: function() { Smolder.show_error() }
}
);
};
},
// submit the preference form to sync the other preferences
'#dev_prefs_sync_button': function(element) {
element.onclick = function() {
var form = $('update_pref');
form.elements['sync'].value = 1;
Smolder.Ajax.form_update({
form : form,
target : 'developer_prefs'
});
};
},
// hightlight selected text, textarea and select inputs
'input.hl': function(element) {
element.onfocus = function() { Smolder.highlight(element); };
element.onblur = function() { Smolder.unHighlight(element); };
},
'textarea.hl': function(element) {
element.onfocus = function() { Smolder.highlight(element); };
lib/Smolder/DB/Developer.pm view on Meta::CPAN
SELECT preference.* FROM preference, project_developer
WHERE preference.id = project_developer.preference
AND project_developer.developer = ?
AND project_developer.project = ?
)
);
$sth->execute($self->id, $project->id);
# there should be only one, but it returns an iterator unless
# in list context
my @prefs = Smolder::DB::Preference->sth_to_objects($sth);
return $prefs[0];
}
=head3 full_name
Returns the full name of the Developer, in the following format:
First Last
=cut
t/dev_prefs.t view on Meta::CPAN
use Smolder::DB::ProjectDeveloper;
use Smolder::Mech;
if (is_smolder_running) {
plan(tests => 56);
} else {
plan(skip_all => 'Smolder not running');
}
my $mech = Smolder::Mech->new();
my $url = base_url() . '/developer_prefs';
my $pw = 's3cr3t';
my $dev = create_developer(password => $pw);
my $proj1 = create_project();
my $proj2 = create_project();
my %data = (
email_type => 'link',
email_freq => 'on_fail',
email_limit => 10,
);
templates/Developer/Prefs/change_pw.tmpl view on Meta::CPAN
[% SET page_title = 'Change Password' %]
<div class="sub_menu">
<a class="sub_menu" href="/app/developer_prefs">Preferences</a>
</div>
[% IF c.dfv_msgs.any_errors %]
<script type="text/javascript">
[% IF c.dfv_msgs.invalid_current_pw %]
Smolder.show_message('warning', 'Your Current Password does not match what we have on file.');
[% END %]
[% IF c.dfv_msgs.invalid_new_pw %]
Smolder.show_message('warning', 'Your New Password must be at least 4 characters long.');
[% END %]
[% IF c.dfv_msgs.invalid_new_pw_retyped %]
Smolder.show_message('warning', 'Your 2nd New Password does not match the 1st');
[% END %]
</script>
[% END %]
<div class="boxed">
[% PROCESS form_header.tmpl %]
<form action="/app/developer_prefs/process_change_pw" class="ajaxable show_indicator" name="change_pw" id="change_pw" method="post">
<table>
<tr>
<td><label class="required[% IF c.dfv_msgs.err_current_pw %] warn[% END %]">Current Password</label></td>
<td><input class="first" type="password" name="current_pw" /></td>
</tr>
<tr>
<td><label class="required[% IF c.dfv_msgs.err_new_pw %] warn[% END %]">New Password</label></td>
<td><input type="password" name="new_pw" /></td>
</tr>
<tr>
templates/Developer/Prefs/pref_form.tmpl view on Meta::CPAN
<div id="developer_prefs_[% pref.id %]">
<form class="ajaxable for_developer_prefs_[% pref.id %] show_pref_indicator_[% pref.id %]" id="update_pref_[% default ? 'default' : pref.id %]" name="update_pref_[% default ? 'default' : pref.id %]" action="/app/developer_prefs/update_pref" method="p...
<input type="hidden" name="project" value="[% project.id %]" />
[% IF default %]
<input type="hidden" name="sync" value="0" />
[% END %]
[% PROCESS form_header.tmpl %]
<table>
<tr>
<td><label class="required[% IF c.dfv_msgs.err_email_type %] warn[% END %]">Email Type</td>
templates/Developer/Prefs/pref_form.tmpl view on Meta::CPAN
<td>
<input name="email_limit" value="[% pref.email_limit %]" size="5"/>
<em>0</em> means there is no limit
</td>
</tr>
<tr>
<td colspan="2" align="right">
<img src="[% c.static_url('/images/indicator.gif') %]" style="display:none" class="indicator" id="pref_indicator_[% pref.id %]" alt="loading" />
<input type="submit" value="Update" />
[% IF default %]
<input type="button" value="Sync All Projects" id="dev_prefs_sync_button" />
[% END %]
</td>
</tr>
</table>
</form>
</div>
templates/Developer/Prefs/show.tmpl view on Meta::CPAN
[% UNLESS ajax %]
[% SET page_title = 'Preferences' %]
<div class="sub_menu">
<a class="sub_menu" href="/app/developer_prefs/change_pw">Change Password</a>
</div>
<div id="developer_prefs" class="boxed">
[% END %]
<form class="ajaxable for_developer_prefs show_pref_indicator" id="update_pref" name="update_pref" action="/app/developer_prefs/update_pref" method="post">
<input type="hidden" name="update_pref" value="1" />
<input type="hidden" name="sync" value="0" />
<input type="hidden" name="default_pref_id" value="[% c.developer.preference.id %]" />
<h2>Update Preferences</h2>
[% PROCESS form_header.tmpl %]
<table>
<tr>
<td><label>Project</label>
templates/Developer/Prefs/show.tmpl view on Meta::CPAN
<td><label class="required[% IF c.dfv_msgs.err_show_passing %] warn[% END %]">Show Passing Results</td>
<td>
<input type="radio" name="show_passing" value="1" /> Yes
<input type="radio" name="show_passing" value="0" /> No
</td>
</tr>
<tr>
<td colspan="2" align="right">
<img src="[% c.static_url('/images/indicator.gif') %]" style="display:none" class="indicator" id="pref_indicator" alt="loading" />
<input type="submit" value="Update" />
<input type="button" value="Reset Projects to Default" id="dev_prefs_sync_button" style="display:none" />
</td>
</tr>
</table>
</form>
[% UNLESS ajax %]
</div>
[% END %]
templates/nav.tmpl view on Meta::CPAN
[% SET projects = c.developer.projects %]
[% SET public_projects = c.public_projects %]
[% SET username = c.developer.guest ? '' : c.developer.username %]
<div id="top_nav">[
<ul>
[% IF username %]
<li class="first">
<span class="menu">[% username %]</span>
<ul>
<li><a href="/app/developer_prefs">preferences</a></li>
<li><a href="/app/public_auth/logout">logout</a></li>
</ul>
</li>
<li>
<a href="/app/projects"[% IF projects %] class="menu"[% END %]>my projects</a>
[% IF projects %]
<ul>
[% FOREACH proj = projects %]
<li><a href="/app/projects/smoke_reports/[% proj.id %]">[% proj.name | html %]</a></li>
[% END %]
( run in 3.940 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )