我使用fullCalendar.js和codeigniter的反手制作事件预订系统,首先有2个角色用户和管理员,用户可以预订事件并删除事件但我想只显示删除按钮Admin和预订活动的用户。所以任何人都可以告诉我这是如何可能的。模式框中的删除按钮和在Calendar.My Html和javascript中的eventClick上显示
<div id="calendarModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Event Details</h4>
</div>
</div>
<input type="hidden" id="eventID"/>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button type="submit" class="btn btn-danger" id="deleteButton">Delete</button>
</div>
</div>
// ----------------------的Javascript ---------------------- ---------
$('#deleteButton').on('click', function(){
// delete button
doDelete();
});
function doDelete(){
$("#calendarModal").modal('hide');
var eventID = $('#eventID').val();
var baseUrl = document.location.origin;
$.ajax({
url: baseUrl+'/mrbs/api/post_api',//
data: 'action=delete&id='+eventID,
type: "POST",
});
$('#calendar').fullCalendar('refetchEvents');
}
提前致谢........:)
答案 0 :(得分:0)
您应该控制服务器端的删除按钮的显示,而不是客户端的Javascript。这意味着在渲染模态时使用Codeigniter,例如:
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<?php if ( ... test if user is admin ... ) { ?>
<button type="submit" class="btn btn-danger" id="deleteButton">Delete</button>
<?php } ?>
</div>
在实际删除之前,您还应该在控制器方法(/mrbs/api/post_api
)中确认用户是管理员。
更新
如果您只想显示当前用户创建的事件,则应在服务器端事件源上处理该事件。您尚未发布Fullcalendar代码,但必须具有以下内容:
$('#calendar').fullCalendar({
// ... code
events: "some/path/to/server-side-json",
});
在some/path/to/server-side-json
控制器方法中,检查进行此查询的用户的用户ID,并仅返回该用户创建的事件。