mirror of
https://github.com/erpnext/foundation.git
synced 2026-10-16 18:00:47 +02:00
Feature for adding user data like website and Introduction for Chapter Members.
This commit is contained in:
@@ -10,23 +10,25 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Member Name</th>
|
<th>Member Name</th>
|
||||||
<th>Member Email</th>
|
<th>Member Email</th>
|
||||||
<th>Introduction</th>
|
|
||||||
<th>Website URL</th>
|
<th>Website URL</th>
|
||||||
<th>Enable</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% for user in members %}
|
{% for user in members %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ frappe.db.get_value('User', user.user, 'full_name') }}</td>
|
<td>{{ frappe.db.get_value('User', user.user, 'full_name') }}</td>
|
||||||
<td>{{ frappe.db.get_value('User', user.user, 'email') }}</td>
|
<td>{{ frappe.db.get_value('User', user.user, 'email') }}</td>
|
||||||
<td>{{ user.introduction }}</td>
|
|
||||||
<td>
|
<td>
|
||||||
{% if user.website_url %}
|
{% if user.website_url %}
|
||||||
<a href="{{ user.website_url }}">{{ user.website_url }}</a></td>
|
<a href="{{ user.website_url }}">{{ user.website_url }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ user.website_url }}
|
{{ user.website_url }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td><label><input type="checkbox" name="enable" {{ checked if user.enabled == 1 else '' }}></label></td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3">
|
||||||
|
{{ user.introduction }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -1,194 +1,59 @@
|
|||||||
{% extends "templates/web.html" %}
|
{% extends "templates/web.html" %}
|
||||||
|
|
||||||
{% block page_content %}
|
{% block page_content %}
|
||||||
|
|
||||||
|
{% macro chapter_button() %}
|
||||||
|
<p><a href="/{{ chapter.route }}" class='btn btn-primary'>
|
||||||
|
Go to Chapter Page</a></p>
|
||||||
|
{% endmacro %}
|
||||||
{% if frappe.session.user=='Guest' %}
|
{% if frappe.session.user=='Guest' %}
|
||||||
<p>Please signup and login to join this chapter</p>
|
<p>Please signup and login to join this chapter</p>
|
||||||
<p><a href="/login?redirect-to=/{{ chapter.route }}" class='btn btn-primary'>Login</a></p>
|
<p><a href="/login?redirect-to=/{{ chapter.route }}" class='btn btn-primary'>Login</a></p>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if already_member %}
|
{% if already_member %}
|
||||||
<p>You are already a member of {{ chapter.title }}!</p>
|
<p>You are already a member of {{ chapter.title }}!</p>
|
||||||
|
{{ chapter_button() }}
|
||||||
|
<p><a href="">Leave Chapter</a></p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>Welcome to chapter {{ chapter.title }}!</p>
|
{% if frappe.local.request.method=='POST' %}
|
||||||
{% endif %}
|
<p>Welcome to chapter {{ chapter.title }}!</p>
|
||||||
<div style="padding: 20px 0;">
|
{{ chapter_button() }}
|
||||||
<div class="row">
|
{% else %}
|
||||||
<div class="col-lg-8 col-md-8">
|
<div style="padding: 20px 0;">
|
||||||
<form name="user-intro">
|
<div class="row">
|
||||||
<div class="form-group">
|
<div class="col-lg-8 col-md-8">
|
||||||
<input id="chapter_name" name="chapter_name" class="form-control" type="text" value={{chapter.name}} />
|
<form name="user-intro" action="/join-chapter" method='POST'>
|
||||||
|
<div class="form-group">
|
||||||
|
<input name="name" class="form-control" type="text"
|
||||||
|
value="{{chapter.name}}">
|
||||||
|
<input name="csrf_token" class="form-control" type="text"
|
||||||
|
value="{{frappe.session.csrf_token}}">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="user" class="">User Name</label>
|
||||||
|
<input name="user" class="form-control" type="text" value="{{ frappe.session.user }}">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="website_url" class="">Website URL</label>
|
||||||
|
<input name="website_url" class="form-control" type="text"
|
||||||
|
placeholder="https://example.com" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="introduction" class="">Introduction</label>
|
||||||
|
<textarea name="introduction" class="form-control"
|
||||||
|
placeholder="Your profession and how you are associated with ERPNext"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="Submit" id="update_member" class="btn-primary">
|
||||||
|
Submit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
</div>
|
||||||
<label for="username" class="">User Name</label>
|
|
||||||
<input id="username" name="username" class="form-control" type="text" value={{ frappe.session.user }} />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="weburl" class="">Website URL</label>
|
|
||||||
<input id="weburl" name="weburl" class="form-control" type="text" placeholder="Please Enter website URL" />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="introduction" class="">Introduction</label>
|
|
||||||
<textarea id="introduction" name="introduction" class="form-control" placeholder="Please Enter your Introduction"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<button type="Submit" id="update_member" class="btn-primary">Submit</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endif %}
|
||||||
</div>
|
{% endif %}
|
||||||
|
|
||||||
<p><a href="/{{ chapter.route }}" class='btn btn-primary'>Go to Chapter Page</a></p>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
frappe.ready(function() {
|
|
||||||
|
|
||||||
// $("#reset-password").on("submit", function() {
|
|
||||||
// return false;
|
|
||||||
// });
|
|
||||||
|
|
||||||
// $("#new_password").on("press", function(e) {
|
|
||||||
// if(e.which===13) $("#update").click();
|
|
||||||
// })
|
|
||||||
|
|
||||||
$("#update_member").click(function() {
|
|
||||||
var args = {
|
|
||||||
: get_url_arg("key") || "",
|
|
||||||
weburl: $("#weburl").val(),
|
|
||||||
introduction: $("#introduction").val()
|
|
||||||
}
|
|
||||||
|
|
||||||
// if(!args.old_password && !args.key) {
|
|
||||||
// frappe.msgprint("Old Password Required.");
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// if(!args.new_password) {
|
|
||||||
// frappe.msgprint("New Password Required.")
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
frappe.call({
|
|
||||||
type: "POST",
|
|
||||||
method: "frappe.core.doctype.user.user.update_password",
|
|
||||||
btn: $("#update"),
|
|
||||||
args: args,
|
|
||||||
statusCode: {
|
|
||||||
401: function() {
|
|
||||||
$('.page-card-head .indicator').removeClass().addClass('indicator red')
|
|
||||||
.text(__('Invalid Password'));
|
|
||||||
},
|
|
||||||
200: function(r) {
|
|
||||||
$("input").val("");
|
|
||||||
// strength_indicator.addClass('hidden');
|
|
||||||
// strength_message.addClass('hidden');
|
|
||||||
$('.page-card-head .indicator')
|
|
||||||
// .removeClass().addClass('indicator green')
|
|
||||||
.html(__('Password Updated'));
|
|
||||||
if(r.message) {
|
|
||||||
frappe.msgprint(__("Password Updated"));
|
|
||||||
setTimeout(function() {
|
|
||||||
window.location.href = r.message;
|
|
||||||
}, 2000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
// window.strength_indicator = $('.password-strength-indicator');
|
|
||||||
// window.strength_message = $('.password-strength-message');
|
|
||||||
|
|
||||||
// $('#new_password').on('keyup', function() {
|
|
||||||
// window.clear_timeout();
|
|
||||||
// window.timout_password_strength = setTimeout(window.test_password_strength, 200);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// window.test_password_strength = function() {
|
|
||||||
// window.timout_password_strength = null;
|
|
||||||
|
|
||||||
// var args = {
|
|
||||||
// key: get_url_arg("key") || "",
|
|
||||||
// old_password: $("#old_password").val(),
|
|
||||||
// new_password: $("#new_password").val()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!args.new_password) {
|
|
||||||
// set_strength_indicator('grey', {'warning': __('Please enter the password') });
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return frappe.call({
|
|
||||||
// type: 'GET',
|
|
||||||
// method: 'frappe.core.doctype.user.user.test_password_strength',
|
|
||||||
// args: args,
|
|
||||||
// callback: function(r) {
|
|
||||||
// // console.log(r.message);
|
|
||||||
// },
|
|
||||||
// statusCode: {
|
|
||||||
// 401: function() {
|
|
||||||
// $('.page-card-head .indicator').removeClass().addClass('indicator red')
|
|
||||||
// .text(__('Invalid Password'));
|
|
||||||
// },
|
|
||||||
// 200: function(r) {
|
|
||||||
// if (r.message && r.message.entropy) {
|
|
||||||
// var score = r.message.score,
|
|
||||||
// feedback = r.message.feedback;
|
|
||||||
|
|
||||||
// feedback.crack_time_display = r.message.crack_time_display;
|
|
||||||
// feedback.score = score;
|
|
||||||
|
|
||||||
// if(feedback.password_policy_validation_passed){
|
|
||||||
// set_strength_indicator('green', feedback);
|
|
||||||
// }else{
|
|
||||||
// set_strength_indicator('red', feedback);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// });
|
|
||||||
// };
|
|
||||||
|
|
||||||
// window.set_strength_indicator = function(color, feedback) {
|
|
||||||
// var message = [];
|
|
||||||
// feedback.help_msg = "";
|
|
||||||
// if(!feedback.password_policy_validation_passed){
|
|
||||||
// feedback.help_msg = __("Hint: Include symbols, numbers and capital letters in the password");
|
|
||||||
// }
|
|
||||||
// if (feedback) {
|
|
||||||
// if(!feedback.password_policy_validation_passed){
|
|
||||||
// if (feedback.suggestions && feedback.suggestions.length) {
|
|
||||||
// feedback.suggestions = feedback.suggestions + ' ' + feedback.help_msg;
|
|
||||||
// message = message.concat(feedback.suggestions);
|
|
||||||
// } else if (feedback.warning) {
|
|
||||||
// feedback.warning = feedback.warning + ' ' + feedback.help_msg;
|
|
||||||
// message.push(feedback.warning);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!message.length) {
|
|
||||||
// message.push(feedback.help_msg);
|
|
||||||
// }
|
|
||||||
// }else{
|
|
||||||
// message.push(__('Success! You are good to go 👍'));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// strength_indicator.removeClass().addClass('password-strength-indicator indicator ' + color);
|
|
||||||
// strength_message.text(message.join(' ') || '').removeClass('hidden');
|
|
||||||
// // strength_indicator.attr('title', message.join(' ') || '');
|
|
||||||
// }
|
|
||||||
|
|
||||||
window.clear_timeout = function() {
|
|
||||||
if (window.timout_password_strength) {
|
|
||||||
clearTimeout(window.timout_password_strength);
|
|
||||||
window.timout_password_strength = null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -3,13 +3,20 @@ import frappe
|
|||||||
def get_context(context):
|
def get_context(context):
|
||||||
context.no_cache = True
|
context.no_cache = True
|
||||||
chapter = frappe.get_doc('Chapter', frappe.form_dict.name)
|
chapter = frappe.get_doc('Chapter', frappe.form_dict.name)
|
||||||
print chapter
|
|
||||||
if frappe.session.user!='Guest':
|
if frappe.session.user!='Guest':
|
||||||
if frappe.session.user in [d.user for d in chapter.members]:
|
if frappe.session.user in [d.user for d in chapter.members]:
|
||||||
context.already_member = True
|
context.already_member = True
|
||||||
else:
|
else:
|
||||||
chapter.append('members', dict(user=frappe.session.user))
|
if frappe.request.method=='GET':
|
||||||
chapter.save(ignore_permissions=1)
|
pass
|
||||||
frappe.db.commit()
|
elif frappe.request.method=='POST':
|
||||||
|
chapter.append('members', dict(
|
||||||
|
user=frappe.session.user,
|
||||||
|
introduction=frappe.form_dict.introduction,
|
||||||
|
website_url=frappe.form_dict.website_url,
|
||||||
|
enabled=1
|
||||||
|
))
|
||||||
|
chapter.save(ignore_permissions=1)
|
||||||
|
frappe.db.commit()
|
||||||
|
|
||||||
context.chapter = chapter
|
context.chapter = chapter
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
{% extends "templates/web.html" %}
|
|
||||||
|
|
||||||
{% block page_content %}
|
|
||||||
|
|
||||||
<p><a href="" class='btn btn-primary'>Go to Chapter Page</a></p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
import frappe
|
|
||||||
|
|
||||||
def get_context(context):
|
|
||||||
context.no_cache = True
|
|
||||||
chapter = frappe.get_doc('Chapter', frappe.form_dict.name)
|
|
||||||
print chapter
|
|
||||||
if frappe.session.user!='Guest':
|
|
||||||
if chapter in [d.name for d in chapter]:
|
|
||||||
context.already_member = True
|
|
||||||
else:
|
|
||||||
chapter.append('members', dict(user=frappe.session.user))
|
|
||||||
chapter.save(ignore_permissions=1)
|
|
||||||
frappe.db.commit()
|
|
||||||
|
|
||||||
context.chapter = chapter
|
|
||||||
Reference in New Issue
Block a user