From bd5262b60c220e0ea3d54547bf068c1faed4bccc Mon Sep 17 00:00:00 2001 From: Daniel Toro Nieto Date: Mon, 21 May 2018 18:03:03 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Ya=20existe=20un=20foro=20publico=20,=20fal?= =?UTF-8?q?te=20dise=C3=B1o=20documentacion=20y=20behaviors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/PostsController.php | 51 ++++++++++--- controllers/RespuestasController.php | 10 +++ models/Respuestas.php | 18 ++++- views/comentarios/_comentarios.php | 4 +- views/posts/_post.php | 2 +- views/posts/create.php | 9 ++- views/posts/index.php | 3 +- views/posts/publico.php | 25 +++++++ views/posts/view-publico.php | 103 +++++++++++++++++++++++++++ 9 files changed, 207 insertions(+), 18 deletions(-) create mode 100644 views/posts/publico.php create mode 100644 views/posts/view-publico.php diff --git a/controllers/PostsController.php b/controllers/PostsController.php index db54569..56cc548 100644 --- a/controllers/PostsController.php +++ b/controllers/PostsController.php @@ -45,7 +45,7 @@ public function behaviors() } /** - * Lists all Posts models. + * Lista de todos los posts de un equipo concreto. * @return mixed * @param mixed $id Representa el identificador del equipo */ @@ -61,6 +61,13 @@ public function actionIndex($id) ]); } + public function actionPublico() + { + return $this->render('publico', [ + 'model' => Posts::find()->where('equipo_usuario_id is null')->all(), + ]); + } + /** * Displays a single Posts model. * @param mixed $id Representa el identificador del equipo @@ -69,12 +76,14 @@ public function actionIndex($id) */ public function actionView($id) { - /*if (!$this->isParticipante($id)) { + $model = $this->findModel($id); + if (!$this->isParticipante($model->equipo_usuario_id)) { + Yii::$app->session->setFlash('error', 'This is the message'); return $this->goBack(); - }*/ + } return $this->render('view', [ - 'model' => $this->findModel($id), + 'model' => $model, //'equipo' => $this->findEquipo($id), ]); } @@ -94,20 +103,40 @@ public function actionCreate($id) $model = new Posts(); $model->creador_id = Yii::$app->user->identity->id; $model->equipo_usuario_id = $id; + $model->scenario = Posts::ESCENARIO_EQUIPO; + return $this->create($model, ['index', 'id' => $id]); + } + + public function actionCreatePublico() + { + $model = new Posts(); + $model->creador_id = Yii::$app->user->identity->id; + return $this->create($model, ['publico']); + } + + public function actionViewPublico($id) + { + return $this->render('view-publico', [ + 'model' => $this->findModel($id), + //'equipo' => $this->findEquipo($id), + ]); + } + + public function create($model, $ruta) + { if ($model->load(Yii::$app->request->post()) && $model->validate()) { $model->upload(); $model->save(); - return $this->redirect(['index', 'id' => $id]); + return $this->redirect($ruta); } $imagenes = array_merge(Plantilla::find()->all(), PlantillaUsuario::find() - ->where(['usuario_id' => Yii::$app->user->identity->id]) - ->all()); + ->where(['usuario_id' => Yii::$app->user->identity->id]) + ->all()); return $this->render('create', [ - 'model' => $model, - 'equipo' => $this->findEquipo($id), - 'imagenes' => $imagenes, - ]); + 'model' => $model, + 'imagenes' => $imagenes, + ]); } /** diff --git a/controllers/RespuestasController.php b/controllers/RespuestasController.php index b3603a2..fb96ee0 100644 --- a/controllers/RespuestasController.php +++ b/controllers/RespuestasController.php @@ -47,6 +47,16 @@ public function actionCreate() return $this->crear(Respuestas::ESCENARIO_EQUIPO); } + public function actionCreatePublico() + { + return $this->crear(Respuestas::ESCENARIO_FORO); + } + + public function actionCreatePadreForo() + { + return $this->crear(Respuestas::ESCENARIO_PADRE); + } + /** * AƱade un comentario al post con un determinado escenario. * @param [type] $escenario [description] diff --git a/models/Respuestas.php b/models/Respuestas.php index 6b9c61f..605c040 100644 --- a/models/Respuestas.php +++ b/models/Respuestas.php @@ -28,6 +28,10 @@ class Respuestas extends \yii\db\ActiveRecord public const ESCENARIO_EQUIPO_PADRE = 'padre'; + public const ESCENARIO_FORO = 'foro'; + + public const ESCENARIO_PADRE = 'padre foro'; + /** * {@inheritdoc} */ @@ -43,7 +47,7 @@ public function rules() { return [ [['comentario', 'usuario_id', 'post_id'], 'required'], - [['padre_id'], 'required', 'on' => self::ESCENARIO_EQUIPO_PADRE], + [['padre_id'], 'required', 'on' => [self::ESCENARIO_EQUIPO_PADRE, self::ESCENARIO_PADRE]], [['comentario'], 'string'], [['usuario_id', 'post_id', 'padre_id'], 'default', 'value' => null], [['usuario_id', 'post_id', 'padre_id'], 'integer'], @@ -59,6 +63,18 @@ public function rules() $this->addError('usuario_id', ' Usuario no valido'); } }, 'on' => [self::ESCENARIO_EQUIPO, self::ESCENARIO_EQUIPO_PADRE]], + [['post_id'], function ($attributes) { + $post = Posts::findOne($this->post_id); + if ($post->equipo_usuario_id != null) { + $this->addError('post_id', ' Posts no valido'); + } + }, 'on' => self::ESCENARIO_FORO], + [['post_id'], function ($attributes) { + $post = Posts::findOne($this->padre_id); + if ($post->equipo_usuario_id != null) { + $this->addError('post_id', ' Posts no valido'); + } + }, 'on' => self::ESCENARIO_PADRE], [['post_id'], 'exist', 'skipOnError' => true, 'targetClass' => Posts::className(), 'targetAttribute' => ['post_id' => 'id']], [['padre_id'], 'exist', 'skipOnError' => true, 'targetClass' => self::className(), 'targetAttribute' => ['padre_id' => 'id']], [['usuario_id'], 'exist', 'skipOnError' => true, 'targetClass' => UsuariosId::className(), 'targetAttribute' => ['usuario_id' => 'id']], diff --git a/views/comentarios/_comentarios.php b/views/comentarios/_comentarios.php index 7addadc..af6df1d 100644 --- a/views/comentarios/_comentarios.php +++ b/views/comentarios/_comentarios.php @@ -15,7 +15,7 @@ usuario->usuarios) ? Html::a( - Html::encode($model->usuario->usuarios->nombre), ['usuarios/view', 'id' => $model->usuario_id]) + Html::encode($model->usuario->usuarios->nombre), ['/usuarios/view', 'id' => $model->usuario_id]) : 'anonimo'; ?> @@ -28,7 +28,7 @@

padre_id)){ - echo '#' . $model->padre->usuario->usuarios->nombre; + echo '#' . Html::a(Html::encode($model->padre->usuario->usuarios->nombre) , ['/usuarios/view', 'id' => $model->padre->usuario_id]); } ?> comentario)?> diff --git a/views/posts/_post.php b/views/posts/_post.php index 7bf5ac9..0bd3418 100644 --- a/views/posts/_post.php +++ b/views/posts/_post.php @@ -9,7 +9,7 @@

titulo)?>

- $model->id], ['class' => 'btn btn-xs btn-info'])?> + 'btn btn-xs btn-info'])?>
creador->usuarios->nombre)?> diff --git a/views/posts/create.php b/views/posts/create.php index 38ab839..aa966a0 100644 --- a/views/posts/create.php +++ b/views/posts/create.php @@ -7,8 +7,13 @@ /* @var $model app\models\Posts */ $this->title = 'Crear Posts'; -$this->params['breadcrumbs'][] = ['label' => 'Mis Equipos', 'url' => ['/equipos-usuarios/index']]; -$this->params['breadcrumbs'][] = ['label' => $equipo->nombre, 'url' => ['index', 'id' => $equipo->id]]; +if ($model->equipoUsuario) { + $this->params['breadcrumbs'][] = ['label' => 'Mis Equipos', 'url' => ['/equipos-usuarios/index']]; + $this->params['breadcrumbs'][] = ['label' => $model->equipoUsuario->nombre, 'url' => ['index', 'id' => $model->equipo_usuario_id]]; +}else { + $this->params['breadcrumbs'][] = ['label' => 'Foro', 'url' => ['/posts/publico']]; +} + $this->params['breadcrumbs'][] = $this->title; ?>
diff --git a/views/posts/index.php b/views/posts/index.php index 9faa097..5dfbd53 100644 --- a/views/posts/index.php +++ b/views/posts/index.php @@ -40,7 +40,8 @@
render('_post', [ - 'model' => $post + 'model' => $post, + 'ruta' => ['/posts/view','id' => $post->id] ]) ?> diff --git a/views/posts/publico.php b/views/posts/publico.php new file mode 100644 index 0000000..21f305a --- /dev/null +++ b/views/posts/publico.php @@ -0,0 +1,25 @@ +title = 'Foro'; +$this->params['breadcrumbs'][] = $this->title; +$this->registerCssFile('/css/equiposUsuarios.css'); +?> +
+ + + render('_post', [ + 'model' => $post, + 'ruta' => ['/posts/view-publico','id' => $post->id] + ]) ?> + + + + + +
diff --git a/views/posts/view-publico.php b/views/posts/view-publico.php new file mode 100644 index 0000000..eee2c57 --- /dev/null +++ b/views/posts/view-publico.php @@ -0,0 +1,103 @@ +title = $model->titulo; +$this->params['breadcrumbs'][] = ['label' => 'Foros', 'url' => ['/posts/publico']]; +$this->params['breadcrumbs'][] = $this->title; + +$rutaPadre = Url::to(['/respuestas/create-padre-foro']); +$ruta = Url::to(['respuestas/create-publico']); + +$js=<<id', + }, + success: function (data){ + console.log(data) + console.log($('#comentario')) + textarea.val(null); + $('#respuesta').append(data); + } + }) +}) + + $('.posts-view').on('click','.responder',responder); + + function responder (){ + $(this).after($(' + +
+ + +
+
+ respuestas) { + echo ListView::widget([ + 'dataProvider' => new ActiveDataProvider([ + 'query' => $model->getRespuestas()->where('padre_id is null')->orderBy('created_at ASC'), + ]), + 'itemView' => '/comentarios/_comentarios', + 'summary' =>'' + ]); + } ?> +
+ + + + From 40ab4d3f19672afb89a8adc91a550f704286c478 Mon Sep 17 00:00:00 2001 From: Daniel Toro Nieto Date: Tue, 22 May 2018 16:04:50 +0200 Subject: [PATCH 2/2] Foro publico y tal --- controllers/PostsController.php | 29 ++++++-- controllers/RespuestasController.php | 12 +++- models/Respuestas.php | 4 +- views/layouts/main.php | 1 + views/posts/_view.php | 98 +++++++++++++++++++++++++ views/posts/publico.php | 22 ++++-- views/posts/view-publico.php | 102 +++------------------------ views/posts/view.php | 99 +++----------------------- 8 files changed, 167 insertions(+), 200 deletions(-) create mode 100644 views/posts/_view.php diff --git a/controllers/PostsController.php b/controllers/PostsController.php index 56cc548..e14b07e 100644 --- a/controllers/PostsController.php +++ b/controllers/PostsController.php @@ -32,11 +32,11 @@ public function behaviors() ], 'access' => [ 'class' => AccessControl::className(), - 'only' => ['index', 'create', 'view'], + 'only' => ['index', 'create', 'view', 'create-publico'], 'rules' => [ [ 'allow' => true, - 'actions' => ['index', 'create', 'view'], + 'actions' => ['index', 'create', 'view', 'create-publico'], 'roles' => ['@'], ], ], @@ -60,11 +60,17 @@ public function actionIndex($id) 'equipo' => $this->findEquipo($id), ]); } - + /** + * Lista todos los posts publico. + * @return [type] [description] + */ public function actionPublico() { return $this->render('publico', [ - 'model' => Posts::find()->where('equipo_usuario_id is null')->all(), + 'model' => Posts::find() + ->where('equipo_usuario_id is null') + ->orderBy('created_at DESC') + ->all(), ]); } @@ -107,6 +113,10 @@ public function actionCreate($id) return $this->create($model, ['index', 'id' => $id]); } + /** + * Crea un post publico. + * @return [type] [description] + */ public function actionCreatePublico() { $model = new Posts(); @@ -114,6 +124,11 @@ public function actionCreatePublico() return $this->create($model, ['publico']); } + /** + * Ves un post publico. + * @param [type] $id [description] + * @return [type] [description] + */ public function actionViewPublico($id) { return $this->render('view-publico', [ @@ -122,6 +137,12 @@ public function actionViewPublico($id) ]); } + /** + * Crea un post. + * @param [type] $model [description] + * @param [type] $ruta [description] + * @return [type] [description] + */ public function create($model, $ruta) { if ($model->load(Yii::$app->request->post()) && $model->validate()) { diff --git a/controllers/RespuestasController.php b/controllers/RespuestasController.php index fb96ee0..4318da2 100644 --- a/controllers/RespuestasController.php +++ b/controllers/RespuestasController.php @@ -18,11 +18,11 @@ public function behaviors() return [ 'access' => [ 'class' => AccessControl::className(), - 'only' => ['create-padre', 'crear'], + 'only' => ['create-padre', 'create', 'create-publico', 'create-padre-foro'], 'rules' => [ [ 'allow' => true, - 'actions' => ['create-padre', 'crear'], + 'actions' => ['create-padre', 'create', 'create-publico', 'create-padre-foro'], 'roles' => ['@'], ], ], @@ -47,11 +47,19 @@ public function actionCreate() return $this->crear(Respuestas::ESCENARIO_EQUIPO); } + /** + * Crea el comentario de un post publico. + * @return [type] [description] + */ public function actionCreatePublico() { return $this->crear(Respuestas::ESCENARIO_FORO); } + /** + * Crea el comentario de un comentario de un post publico. + * @return [type] [description] + */ public function actionCreatePadreForo() { return $this->crear(Respuestas::ESCENARIO_PADRE); diff --git a/models/Respuestas.php b/models/Respuestas.php index 605c040..7aad2c7 100644 --- a/models/Respuestas.php +++ b/models/Respuestas.php @@ -70,8 +70,8 @@ public function rules() } }, 'on' => self::ESCENARIO_FORO], [['post_id'], function ($attributes) { - $post = Posts::findOne($this->padre_id); - if ($post->equipo_usuario_id != null) { + $post = Respuestas::findOne($this->padre_id); + if ($post == null || $post->post->equipo_usuario_id != null) { $this->addError('post_id', ' Posts no valido'); } }, 'on' => self::ESCENARIO_PADRE], diff --git a/views/layouts/main.php b/views/layouts/main.php index 1606634..3088223 100644 --- a/views/layouts/main.php +++ b/views/layouts/main.php @@ -102,6 +102,7 @@ $item = [ ['label' => 'Inicio', 'url' => ['/noticias/index']], ['label' => 'Ligas', 'items' => $i], + ['label' => 'Foro' , 'url' => ['/posts/publico']], ]; if (Yii::$app->user->isGuest) { diff --git a/views/posts/_view.php b/views/posts/_view.php new file mode 100644 index 0000000..d5d52e8 --- /dev/null +++ b/views/posts/_view.php @@ -0,0 +1,98 @@ +id', + }, + success: function (data){ + console.log(data) + console.log($('#comentario')) + textarea.val(null); + $('#respuesta').append(data); + } + }) +}) + + $('.posts-view').on('click','.responder',responder); + + function responder (){ + var id = $(this).parent().data('id'); + $(this).after($(' + + + + +
+
+ respuestas) { + echo ListView::widget([ + 'dataProvider' => new ActiveDataProvider([ + 'query' => $model->getRespuestas()->where('padre_id is null')->orderBy('created_at ASC'), + ]), + 'itemView' => '/comentarios/_comentarios', + 'summary' =>'' + ]); + } ?> +
+ + + + diff --git a/views/posts/publico.php b/views/posts/publico.php index 21f305a..94002ec 100644 --- a/views/posts/publico.php +++ b/views/posts/publico.php @@ -11,13 +11,21 @@ $this->registerCssFile('/css/equiposUsuarios.css'); ?>
- - - render('_post', [ - 'model' => $post, - 'ruta' => ['/posts/view-publico','id' => $post->id] - ]) ?> - + + + 'btn btn-success']) ?> + +
+
+ + render('_post', [ + 'model' => $post, + 'ruta' => ['/posts/view-publico','id' => $post->id] + ]) ?> + +
+
+ diff --git a/views/posts/view-publico.php b/views/posts/view-publico.php index eee2c57..91d101f 100644 --- a/views/posts/view-publico.php +++ b/views/posts/view-publico.php @@ -1,103 +1,17 @@ title = $model->titulo; $this->params['breadcrumbs'][] = ['label' => 'Foros', 'url' => ['/posts/publico']]; $this->params['breadcrumbs'][] = $this->title; - -$rutaPadre = Url::to(['/respuestas/create-padre-foro']); -$ruta = Url::to(['respuestas/create-publico']); - -$js=<<id', - }, - success: function (data){ - console.log(data) - console.log($('#comentario')) - textarea.val(null); - $('#respuesta').append(data); - } - }) -}) - - $('.posts-view').on('click','.responder',responder); - - function responder (){ - $(this).after($(' - -
- - -
-
- respuestas) { - echo ListView::widget([ - 'dataProvider' => new ActiveDataProvider([ - 'query' => $model->getRespuestas()->where('padre_id is null')->orderBy('created_at ASC'), - ]), - 'itemView' => '/comentarios/_comentarios', - 'summary' =>'' - ]); - } ?> -
- - - - +render('_view', [ + 'model' => $model, + 'rutaPadre'=> Url::to(['/respuestas/create-padre-foro']), + 'ruta' => Url::to(['respuestas/create-publico']), +]) +?> diff --git a/views/posts/view.php b/views/posts/view.php index 22b6d8e..7d88b25 100644 --- a/views/posts/view.php +++ b/views/posts/view.php @@ -1,104 +1,21 @@ title = $model->titulo; $this->params['breadcrumbs'][] = ['label' => 'Mis Equipos', 'url' => ['/equipos-usuarios/index']]; $this->params['breadcrumbs'][] = ['label' => $model->equipoUsuario->nombre, 'url' => ['/posts/index', 'id' => $model->equipo_usuario_id]]; $this->params['breadcrumbs'][] = $this->title; -$rutaPadre = Url::to(['/respuestas/create-padre']); -$ruta = Url::to(['respuestas/create']); - -$js=<<id', - }, - success: function (data){ - console.log(data) - console.log($('#comentario')) - textarea.val(null); - $('#respuesta').append(data); - } - }) -}) - - $('.posts-view').on('click','.responder',responder); - - function responder (){ - $(this).after($(' - - - - -
-
- respuestas) { - echo ListView::widget([ - 'dataProvider' => new ActiveDataProvider([ - 'query' => $model->getRespuestas()->where('padre_id is null')->orderBy('created_at ASC'), - ]), - 'itemView' => '/comentarios/_comentarios', - 'summary' =>'' - ]); - } ?> -
- - - - +render('_view', [ + 'model' => $model, + 'rutaPadre'=> Url::to(['/respuestas/create-padre']), + 'ruta' => Url::to(['respuestas/create']), +]) +?>