Skip to content
This repository has been archived by the owner on Feb 24, 2021. It is now read-only.

Commit

Permalink
Moodle Structure editor
Browse files Browse the repository at this point in the history
  • Loading branch information
pajasry committed Mar 3, 2020
1 parent 2f4aa17 commit bf852d9
Show file tree
Hide file tree
Showing 48 changed files with 2,119 additions and 59 deletions.
39 changes: 36 additions & 3 deletions config/packages/easy_admin.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,42 @@
easy_admin:
site_name: '<a href="/">Niners Brutal Admin</a>'
site_name: '<a href="/admin">Niners Brutal Admin</a>'
user:
display_name: true
display_avatar: true
avatar_property_path: 'getAvatar'
entities:
- App\Entity\User
- App\Entity\Team
User:
class: App\Entity\User
Team:
class: App\Entity\Team
Course:
class: App\Entity\Course
list:
fields:
- 'id'
- {property: 'image.name', label: 'Image', type: 'image', base_path: '/imagesRepository'}
- 'name'
- 'owner'
- 'createdAt'
Chapter:
class: App\Entity\Chapter
Image:
class: App\Entity\Image
list:
fields:
- 'id'
- { property: 'name', type: 'image', base_path: '/imagesRepository' }
- 'altName'
- 'createdAt'
- 'owner'
show:
fields:
- { property: 'name', type: 'image', base_path: '/imagesRepository' }
form:
fields:
- 'altName'
- 'name'
- { property: 'imageFile', type: 'file'}
- 'owner'
- 'createdAt'

1 change: 1 addition & 0 deletions config/packages/twig.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
twig:
default_path: '%kernel.project_dir%/templates'
form_themes: ['bootstrap_4_layout.html.twig']
9 changes: 5 additions & 4 deletions config/packages/vich_uploader.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
vich_uploader:
db_driver: orm

#mappings:
# products:
# uri_prefix: /images/products
# upload_destination: '%kernel.project_dir%/public/images/products'
mappings:
image:
uri_prefix: /imagesRepository
upload_destination: '%kernel.project_dir%/public/imagesRepository'
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/imagesRepository/test.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions public/js/chapter_admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
$('.remove').click((e)=>{
e.preventDefault();
let el= $(e.target);
$.ajax({
url: el.attr('href'),
type:"delete",
date:"",
success: (r)=>{
console.log(r)
el.parents('.row').fadeOut()
},
error: (e)=>{
console.log(e)
}
})
})
16 changes: 16 additions & 0 deletions public/js/course_admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
$('.remove').click((e)=>{
e.preventDefault();
let el= $(e.target);
$.ajax({
url: el.attr('href'),
type:"delete",
date:"",
success: (r)=>{
console.log(r)
el.parents('.col-lg-4').fadeOut()
},
error: (e)=>{
console.log(e)
}
})
})
16 changes: 16 additions & 0 deletions public/js/image_admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
$('.remove').click((e)=>{
e.preventDefault();
let el= $(e.target);
$.ajax({
url: el.attr('href'),
type:"delete",
date:"",
success: (r)=>{
console.log(r)
el.parents('.col-3').fadeOut()
},
error: (e)=>{
console.log(e)
}
})
})
116 changes: 87 additions & 29 deletions public/js/user_list.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
$(()=>{
let input, filter, teams;
input = $("#search").val();
teams = $(".filter-active");
//Apply filters on users
let filter = function(){
let searchQuery = $("#search").val().toUpperCase();
let selectedTeams = $(".badge-filter-active");
selectedTeams = selectedTeams.map(x=>selectedTeams[x].innerText).toArray()
let users = $('.user-row').toArray();

});
users.forEach((u)=>{
let userName = $(u).children().children('a').text().toUpperCase();
let userTeams = $(u).children().children('.badge');
let teamCrit = false;
let nameCrit = false;
userTeams = userTeams.map(x=>userTeams[x].innerText).toArray()
if(selectedTeams.length>0){
selectedTeams.forEach((st)=>{ //check team selector
if(userTeams.includes(st))
teamCrit=true;
})
}
else{
teamCrit=true;
}

let filter = function(){
let input, filter, teams;
input = $("#search").val().toUpperCase();
teams = $(".badge-filter-active").text().toString().toUpperCase();

let users = $("tr");
for (i=1; i<2;i++){
let name = $(users[i].getElementsByTagName('a')[0]).text();
var myTeams = [].slice.call($(users[i].getElementsByClassName('badge')));
function myFunc(i){
var myRec= /(?<=>)(.*)(?=<)/;
return myRec.exec(i)[0];
};
console.log(myTeams.map(myFunc))
//console.log(myTeams.toUpperCase().indexOf(teams.toUpperCase()));
console.log();
if(name.toUpperCase().indexOf(input)>-1&&
myTeams.indexOf(teams)>-1){
$(users[i]).addClass('d-block');
$(users[i]).removeClass('d-none');

if(userName.indexOf(searchQuery)>-1)
nameCrit=true;

if(nameCrit && teamCrit){
$(u).addClass('d-block');
$(u).removeClass('d-none');
}
else{
$(users[i]).removeClass('d-block');
$(users[i]).addClass('d-none');
$(u).addClass('d-none');
$(u).removeClass('d-block');
}
}
})
}

$(".badge-filter").click((e)=>{
Expand All @@ -39,6 +42,61 @@ $(".badge-filter").click((e)=>{
$(el).toggleClass('p-2');
filter();
});

$('#search').keyup((e)=>{
filter()
});
});

$('.point-change').click((e)=>{
e.preventDefault();
let el = e.target;
if(!$(el).attr('href'))
el = $(el).parent('a')[0];
let points = $(el).siblings('input').val();
if(!$(el).hasClass('btn-success'))
points= points*(-1);
$.ajax({
url: $(el).attr('href'),
type: "POST",
data:{
'points':points
},
dataType:'json',
success: (r)=>{
console.log($(el).parents('tr').find('.karma'));
$(el).parents('tr').find('.karma')[0].innerText = r['points'];
},
error:(e)=>{
console.log(e);
}
})
})

$(".team-points").click((e)=>{
e.preventDefault();
let el = e.target;
if(!$(el).attr('href'))
el = $(el).parent('a')[0];
let points = $(el).siblings('input').val();
if(!$(el).hasClass('btn-success'))
points= points*(-1);
let teams = $('.badge-filter-active');
teams = teams.map(x=>$(teams[x]).attr('id')).toArray();
teams.forEach((t)=>{
$.ajax({
url: $(el).attr('href').replace('99',t),
type: "POST",
data:{
'points':points
},
dataType:'json',
success: (r)=>{
console.log(r)
},
error:(e)=>{
console.log(e);
}
})
})
location.reload()
})
31 changes: 31 additions & 0 deletions src/Controller/ApiImageController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

namespace App\Controller;

use App\Entity\Image;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;

class ApiImageController extends AbstractController
{
/**
* @Route("/api/image/{id}", name="api_image_remove", methods={"DELETE"})
*/
public function remove(Image $image=null, EntityManagerInterface $manager)
{
if(!empty($image)){
try{
$manager->remove($image);
$manager->flush();
return new JsonResponse('OK',200);
} catch (\Exception $e){
return new JsonResponse($e->getMessage(),$e->getCode());
}
}
else
return new JsonResponse('Image was not found',404);
}
}
51 changes: 51 additions & 0 deletions src/Controller/ApiMoodleController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace App\Controller;

use App\Entity\Chapter;
use App\Entity\Course;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;

class ApiMoodleController extends AbstractController
{
/**
* @Route("/api/moodle/{id}", methods={"DELETE"}, name="api_moodle_course_remove")
*/
public function removeCourse(Course $course = null, EntityManagerInterface $manager)
{
if(!empty($course)){
try{
$manager->remove($course);
$manager->flush();
return new JsonResponse('Course was removed',200);
} catch(\Exception $e){
return new JsonResponse($e->getMessage(), $e->getCode());
}
}
else
return new JsonResponse('Course wasnt found',404);
}

/**
* @Route("/api/moodle/chapter/{id}", methods={"DELETE"}, name="api_moodle_chapter_remove")
*/
public function removeChapter(Chapter $chapter = null, EntityManagerInterface $manager)
{
if(!empty($chapter)){
try{
$manager->remove($chapter);
$manager->flush();
return new JsonResponse('Chapter was removed',200);
} catch(\Exception $e){
return new JsonResponse("Something bad happend. Becouse developer was lazy he wasnt write proper error log",500);
}
}
else
return new JsonResponse('Chapter wasnt found',404);
}


}
31 changes: 31 additions & 0 deletions src/Controller/ApiTeamController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

namespace App\Controller;

use App\Entity\Team;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class ApiTeamController extends AbstractController
{
/**
* @Route("/api/team/{id}/changePoints", name="api_team_change_point")
*/
public function changePoints(Team $team,Request $request, EntityManagerInterface $manager)
{
if($team){
$points = (int)$request->request->get('points');
foreach ($team->getMembers() as $u){
$u->changeKarma($points);
}
$manager->flush();
return new JsonResponse('Karma of all team member was updated',200);
}
return new JsonResponse("Something bad happens. Because dev was lazy and under pressure he wasnt make proper error message",500);


}
}
28 changes: 28 additions & 0 deletions src/Controller/ApiUserController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace App\Controller;

use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class ApiUserController extends AbstractController
{
/**
* @Route("/api/user/{id}/changePoints", name="api_user_change_points")
*/
public function changePoint(User $user, Request $request, EntityManagerInterface $manager)
{
if($user){
$points = (int)$request->request->get('points');
$user->changeKarma($points);
$manager->flush($user);
return new JsonResponse(['id'=>$user->getId(), "points"=>$user->getKarma()],200);
}

return new JsonResponse("Something bad happens. Because dev was lazy and under pressure he wasnt make proper error message",500);
}
}
Loading

0 comments on commit bf852d9

Please sign in to comment.