forked from saurabh/orbit4-5
group mods for edit post
This commit is contained in:
parent
2fc15eab29
commit
e8b727af01
|
@ -33,6 +33,14 @@ class Admin::GroupsController < OrbitGroupController
|
|||
redirect_to admin_group_path(@group)
|
||||
end
|
||||
|
||||
def updatepost
|
||||
@post = GroupPost.find(params[:id])
|
||||
group = @post.group
|
||||
@post.update_attributes(post_update_params)
|
||||
@post.save
|
||||
redirect_to admin_group_path(group)
|
||||
end
|
||||
|
||||
def deletepost
|
||||
gp = GroupPost.find(params[:id])
|
||||
gp.destroy
|
||||
|
@ -52,6 +60,12 @@ class Admin::GroupsController < OrbitGroupController
|
|||
}
|
||||
end
|
||||
|
||||
def editpost
|
||||
render_401 and return if @post.author != current_user.id
|
||||
@no_breadcrumb = true
|
||||
@grouppost = @post
|
||||
end
|
||||
|
||||
def show
|
||||
@no_breadcrumb = true
|
||||
@no_filter = true
|
||||
|
@ -263,6 +277,42 @@ class Admin::GroupsController < OrbitGroupController
|
|||
p
|
||||
end
|
||||
|
||||
def post_update_params
|
||||
p = params.require(:group_post).permit!
|
||||
p["author"] = current_user.id
|
||||
params[:images_to_destroy].each do |img|
|
||||
gpi = GroupPostImage.find(img) rescue nil
|
||||
gpi.destroy if !gpi.nil?
|
||||
end if !params[:images_to_destroy].nil?
|
||||
|
||||
images = @post.group_post_images
|
||||
|
||||
p[:group_post_images].each do |id|
|
||||
gpi = GroupPostImage.find(id) rescue nil
|
||||
if !gpi.nil?
|
||||
images << gpi
|
||||
end
|
||||
end if !p[:group_post_images].nil?
|
||||
|
||||
params[:files_to_destroy].each do |fil|
|
||||
gpf = GroupPostFile.find(fil) rescue nil
|
||||
gpf.destroy if !gpf.nil?
|
||||
end if !params[:files_to_destroy].nil?
|
||||
|
||||
files = @post.group_post_files
|
||||
|
||||
p[:group_post_files].each do |id|
|
||||
gpf = GroupPostFile.find(id) rescue nil
|
||||
if !gpf.nil?
|
||||
files << gpf
|
||||
end
|
||||
end if !p[:group_post_files].nil?
|
||||
|
||||
p[:group_post_images] = images
|
||||
p[:group_post_files] = files
|
||||
p
|
||||
end
|
||||
|
||||
def post_image_params
|
||||
params.require(:group_post_image).permit!
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ class OrbitGroupController < ApplicationController
|
|||
when "newpost", "createpost", "members"
|
||||
uid = params[:group_id].split("-").last
|
||||
@group = Group.find_by(:uid => uid)
|
||||
when "showpost"
|
||||
when "showpost", "editpost"
|
||||
uid = params[:id].split("-").last
|
||||
@post = GroupPost.find_by(:uid => uid)
|
||||
@group = @post.group
|
||||
|
@ -21,7 +21,7 @@ class OrbitGroupController < ApplicationController
|
|||
@access_right_level = "none"
|
||||
read_or_write = @group.permission rescue "read"
|
||||
case params[:action]
|
||||
when "show", "showpost", "newpost", "edit", "members"
|
||||
when "show", "showpost", "newpost", "edit", "members", "editpost"
|
||||
is_member = @group.users.include?(current_user)
|
||||
if @group.admins.include?(current_user.id.to_s)
|
||||
@access_right_level = "admin"
|
||||
|
|
|
@ -20,5 +20,9 @@ class Group
|
|||
scope :archived, ->{ where(archive: true) }
|
||||
scope :not_archived, ->{ where(archive: false) }
|
||||
|
||||
def privacy_name
|
||||
return self.privacy == "closed" ? "private" : "public"
|
||||
end
|
||||
|
||||
|
||||
end
|
|
@ -25,7 +25,9 @@
|
|||
</div>
|
||||
<% end %>
|
||||
<div class="group-avatar">
|
||||
<a href="<%= admin_group_path(group) %>">
|
||||
<%= image_tag(group.image) %>
|
||||
</a>
|
||||
</div>
|
||||
<div class="group-info">
|
||||
<h4 class="group-name"><%= link_to group.title, admin_group_path(group) %></h4>
|
||||
|
@ -44,7 +46,7 @@
|
|||
<ul class="group-roles">
|
||||
<li class="group-privacy">
|
||||
<span class="group-staturs">Privacy : </i>
|
||||
<span class="label <%= group.privacy == 'closed' ? "private" : "public" %>"><%= group.privacy %></span>
|
||||
<span class="label <%= group.privacy_name %>"><%= group.privacy_name %></span>
|
||||
</li>
|
||||
<li class="group-description">
|
||||
<% content = group.description %>
|
||||
|
|
|
@ -68,10 +68,10 @@
|
|||
<label class="control-label muted">Privacy</label>
|
||||
<div class="controls">
|
||||
<label class="radio inline">
|
||||
<input type="radio" name="group[privacy]" value="open" <%= @group.privacy == "open" ? "checked='checked'" : "" %> /> Open
|
||||
<input type="radio" name="group[privacy]" value="open" <%= @group.privacy == "open" ? "checked='checked'" : "" %> /> Public
|
||||
</label>
|
||||
<label class="radio inline">
|
||||
<input type="radio" name="group[privacy]" value="closed" <%= @group.privacy == "closed" ? "checked='checked'" : "" %> /> Closed
|
||||
<input type="radio" name="group[privacy]" value="closed" <%= @group.privacy == "closed" ? "checked='checked'" : "" %> /> Private
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -5,13 +5,22 @@
|
|||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="group-post-dropdown">
|
||||
<% if post.author.to_s != current_user.id.to_s %>
|
||||
<li class="group-post-dropdown-item">
|
||||
<a href="#">
|
||||
<i class="fa fa-flag-o"></i>
|
||||
Flag inappropriate</a>
|
||||
</a>
|
||||
</li>
|
||||
<% if is_user_group_admin? || post.author.to_s == current_user.id.to_s %>
|
||||
<% else %>
|
||||
<li class="group-post-dropdown-item">
|
||||
<a href="/admin/post/<%= post.to_param %>/edit">
|
||||
<i class="fa fa-pencil-square-o"></i>
|
||||
Edit this post
|
||||
</a>
|
||||
</li>
|
||||
<% end %>
|
||||
<% if is_user_group_admin? || post.author.to_s == current_user.id.to_s%>
|
||||
<li class="group-post-dropdown-item">
|
||||
<a href="/admin/posts/<%= post.id.to_s %>" class="delete-post-btn">
|
||||
<i class="fa fa-trash-o"></i>
|
||||
|
|
|
@ -34,13 +34,19 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t(:images) %></label>
|
||||
<div class="controls">
|
||||
<!-- <input name="group_post_images" type="file" multiple > -->
|
||||
<% if params[:action] == "editpost" %>
|
||||
<div>
|
||||
<% @grouppost.group_post_images.each do |gpi| %>
|
||||
<span>
|
||||
<img src="<%= gpi.image.thumb.url %>" style="width:120px;" />
|
||||
<input type="checkbox" name="images_to_destroy[]" value="<%= gpi.id.to_s %>" /> Delete Image
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="dropzone dropzone-pool" id="group-post-images">
|
||||
<div class="dropzone-previews" id="group-post-images-container"></div>
|
||||
</div>
|
||||
<% if params[:action] == "editpost" %>
|
||||
<button class="upload_image_btn btn">Upload</button>
|
||||
<% end %>
|
||||
<button class="remove_image_btn btn btn-warning">
|
||||
<i class="fa fa-ban"></i>
|
||||
<span>Remove all images</span>
|
||||
|
@ -76,13 +82,19 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t(:files) %></label>
|
||||
<div class="controls">
|
||||
<!-- <input name="group_post_images" type="file" multiple > -->
|
||||
<% if params[:action] == "editpost" %>
|
||||
<div>
|
||||
<% @grouppost.group_post_files.each do |gpf| %>
|
||||
<span>
|
||||
<span><%= File.basename(gpf.file.path) %></span>
|
||||
<input type="checkbox" name="files_to_destroy[]" value="<%= gpf.id.to_s %>" /> Delete File
|
||||
</span>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="dropzone dropzone-pool" id="group-post-files">
|
||||
<div class="dropzone-previews" id="group-post-files-container"></div>
|
||||
</div>
|
||||
<% if params[:action] == "editpost" %>
|
||||
<button class="upload_file_btn">Upload</button>
|
||||
<% end %>
|
||||
<button class="remove_file_btn btn btn-warning">
|
||||
<i class="fa fa-ban"></i>
|
||||
<span>Remove all files<span>
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
<%= form_for @post, :url => "/admin/post/#{@post.id.to_s}/updatepost", :html => { :multipart => true , :class=>"form-horizontal main-forms", :id=>"edit_post_form"} do |f| %>
|
||||
<fieldset>
|
||||
<%= render :partial => "post_form", locals: {f: f} %>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
<script type="text/javascript">
|
||||
Dropzone.autoDiscover = false;
|
||||
var image_id_panel = $("#image_ids"),
|
||||
file_id_panel = $("#file_ids"),
|
||||
total_images = 0,
|
||||
total_files = 0;
|
||||
var groupImageDropzone = new Dropzone("div#group-post-images", {
|
||||
url : "/admin/posts/image",
|
||||
previewsContainer : "#group-post-images-container",
|
||||
paramName : "group_post_image[image]",
|
||||
clickable : true,
|
||||
autoProcessQueue : false,
|
||||
maxFilesize : 2,
|
||||
addRemoveLinks : true,
|
||||
uploadMultiple : false,
|
||||
accept: function(file, done) {
|
||||
var regex = new RegExp(/(\.|\/)(gif|jpe?g|png)$/i)
|
||||
if(regex.test(file.name)){
|
||||
total_images++;
|
||||
done();
|
||||
}else{
|
||||
this.removeFile(file);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
$(".upload_image_btn").on("click",function(){
|
||||
$("#group-post-images a.dz-remove").remove();
|
||||
doImagesUpload();
|
||||
return false;
|
||||
})
|
||||
|
||||
$(".remove_image_btn").on("click",function(){
|
||||
groupImageDropzone.removeAllFiles();
|
||||
return false;
|
||||
})
|
||||
|
||||
groupImageDropzone.on("success",function(file,data){
|
||||
image_id_panel.append("<input type='hidden' name='group_post[group_post_images][]' value='" + data.id + "' />");
|
||||
total_images--;
|
||||
if(total_images == 0){
|
||||
if(groupFilesDropzone.getQueuedFiles().length > 0){
|
||||
doFilesUpload();
|
||||
}else{
|
||||
submitForm();
|
||||
}
|
||||
}
|
||||
})
|
||||
groupImageDropzone.on("sending",function(file,xhr,obj){
|
||||
obj.append("authenticity_token",$("form#edit_post_form input[name=authenticity_token]").val());
|
||||
})
|
||||
|
||||
var doImagesUpload = function(){
|
||||
groupImageDropzone.processQueue();
|
||||
groupImageDropzone.on("complete", function(file) {
|
||||
var filesCount = groupImageDropzone.getQueuedFiles().length;
|
||||
if(filesCount > 0){
|
||||
doImagesUpload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var groupFilesDropzone = new Dropzone("div#group-post-files", {
|
||||
url : "/admin/posts/file",
|
||||
previewsContainer : "#group-post-files-container",
|
||||
paramName : "group_post_file[file]",
|
||||
clickable : true,
|
||||
autoProcessQueue : false,
|
||||
addRemoveLinks : true,
|
||||
uploadMultiple : false,
|
||||
maxFilesize : 6,
|
||||
accept: function(file, done) {
|
||||
var regex = new RegExp(/(\.|\/)(pdf|doc?x|xls?x|rtf|txt|ppt?x|mp3|mov|avi|gif|jpe?g|png|zip|rar)$/i)
|
||||
if(regex.test(file.name)){
|
||||
total_files++;
|
||||
done();
|
||||
}else{
|
||||
this.removeFile(file);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
$(".upload_file_btn").on("click",function(){
|
||||
$("#group-post-files a.dz-remove").remove();
|
||||
doFilesUpload();
|
||||
return false;
|
||||
})
|
||||
|
||||
$(".remove_file_btn").on("click",function(){
|
||||
groupFilesDropzone.removeAllFiles();
|
||||
return false;
|
||||
})
|
||||
|
||||
groupFilesDropzone.on("success",function(file,data){
|
||||
file_id_panel.append("<input type='hidden' name='group_post[group_post_files][]' value='" + data.id + "' />");
|
||||
total_files--;
|
||||
if(total_files == 0){
|
||||
submitForm();
|
||||
}
|
||||
})
|
||||
groupFilesDropzone.on("sending",function(file,xhr,obj){
|
||||
obj.append("authenticity_token",$("form#edit_post_form input[name=authenticity_token]").val());
|
||||
})
|
||||
|
||||
var doFilesUpload = function(){
|
||||
groupFilesDropzone.processQueue();
|
||||
groupFilesDropzone.on("complete", function(file) {
|
||||
var filesCount = groupFilesDropzone.getQueuedFiles().length;
|
||||
if(filesCount > 0){
|
||||
doFilesUpload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$("#create-post-form-btn").on("click",function(){
|
||||
if(groupImageDropzone.getQueuedFiles().length > 0){
|
||||
doImagesUpload();
|
||||
}else if(groupFilesDropzone.getQueuedFiles().length > 0){
|
||||
doFilesUpload();
|
||||
}else{
|
||||
submitForm();
|
||||
}
|
||||
// uploading all the files
|
||||
$(".upload-status-notice")
|
||||
.removeClass("hide")
|
||||
.addClass("animated slideInRight");
|
||||
return false;
|
||||
})
|
||||
|
||||
var submitForm = function(){
|
||||
if(groupImageDropzone.getQueuedFiles().length > 0 || groupFilesDropzone.getQueuedFiles().length > 0){
|
||||
return false;
|
||||
}else{
|
||||
$(".upload-status-notice span.upload-text").text("Submitting");
|
||||
$("form#edit_post_form").submit();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
|
@ -22,7 +22,6 @@
|
|||
var regex = new RegExp(/(\.|\/)(gif|jpe?g|png)$/i)
|
||||
if(regex.test(file.name)){
|
||||
total_images++;
|
||||
console.log(total_images)
|
||||
done();
|
||||
}else{
|
||||
this.removeFile(file);
|
||||
|
|
|
@ -52,16 +52,23 @@
|
|||
<div class="group-post-description-wrap" id="group_info_area" style="display:none;">
|
||||
<% if @group.privacy == "closed" %>
|
||||
<span class="group-post-status-wrap close-eye button button-activated">
|
||||
<i class="group-post-status icon-eye-open"></i> Closed
|
||||
<i class="group-post-status icon-eye-open"></i> Private
|
||||
</span>
|
||||
<% else %>
|
||||
<span class="group-post-status-wrap open-eye button button-activated">
|
||||
<i class="group-post-status icon-eye-open"></i> Open
|
||||
<i class="group-post-status icon-eye-open"></i> Public
|
||||
</span>
|
||||
<% end %>
|
||||
<h4 class="muted">Group Description</h4>
|
||||
<p class="group-post-description"><%= @group.description %></p>
|
||||
<p><a href="<%= admin_group_members_path(@group) %>"><%= @group.users.count %> members.</a></p>
|
||||
<p>
|
||||
<% number_of_members = @group.users.count %>
|
||||
<% if number_of_members > 0 %>
|
||||
<a href="<%= admin_group_members_path(@group) %>"><%= number_of_members.to_s %> member<%= number_of_members > 1 ? "s" : "" %></a>
|
||||
<% else %>
|
||||
No members
|
||||
<% end %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render :partial => "post", :collection => @group.group_posts.desc(:created_at) %>
|
||||
|
|
|
@ -135,6 +135,8 @@ Orbit::Application.routes.draw do
|
|||
post "posts/file" => 'groups#upload_file'
|
||||
get "posts/file/:id" => "groups#download_file"
|
||||
delete "posts/:id" => "groups#deletepost"
|
||||
get "post/:id/edit" => "groups#editpost"
|
||||
patch "post/:id/updatepost" => "groups#updatepost"
|
||||
post "posts/comment" => 'groups#new_comment'
|
||||
|
||||
resources :groups do
|
||||
|
|
Loading…
Reference in New Issue