Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taskonsite-архив-перенесен
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitry Korolev
taskonsite-архив-перенесен
Commits
a5dece2f
Commit
a5dece2f
authored
Jun 22, 2016
by
Александр Кузнецов
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'blog-hashtag-filtr' into 'master'
Blog hashtag filtr See merge request !43
parents
6467955a
5f012166
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
112 additions
and
85 deletions
+112
-85
common/modules/blog/assets/GeneratorAsset.php
common/modules/blog/assets/GeneratorAsset.php
+1
-1
common/modules/blog/assets/src/js/generator.js
common/modules/blog/assets/src/js/generator.js
+23
-75
common/modules/blog/controllers/PostController.php
common/modules/blog/controllers/PostController.php
+83
-5
common/modules/blog/views/post/_sidebar.php
common/modules/blog/views/post/_sidebar.php
+4
-3
common/modules/blog/views/post/index.php
common/modules/blog/views/post/index.php
+1
-1
No files found.
common/modules/blog/assets/GeneratorAsset.php
View file @
a5dece2f
...
...
@@ -19,7 +19,7 @@ class GeneratorAsset extends AssetBundle
'css/style_add_22.05.16.css'
,
];
public
$js
=
[
//
'js/generator.js',
'js/generator.js'
,
];
public
$depends
=
[
'yii\web\JqueryAsset'
,
...
...
common/modules/blog/assets/src/js/generator.js
View file @
a5dece2f
/**
* Created by andre on 21.06.2016.
*/
$
(
'
form.bids-form
'
).
on
(
'
beforeSubmit
'
,
function
(
e
)
{
var
form
=
$
(
this
),
xhr
=
new
XMLHttpRequest
,
filebool
=
false
,
file
,
data
=
new
FormData
();
form
.
find
(
'
input, textarea
'
).
each
(
function
(){
data
.
append
(
$
(
this
).
attr
(
'
name
'
),
$
(
this
).
val
());
});
if
(
form
.
find
(
'
input[type=file]
'
).
length
)
{
file
=
form
.
find
(
'
input[type=file]
'
)[
0
].
files
[
0
];
filebool
=
!
filebool
;
data
.
append
(
"
Bid[file]
"
,
file
);
}
xhr
.
open
(
"
POST
"
,
form
.
attr
(
'
action
'
),
true
);
xhr
.
setRequestHeader
(
"
X-Requested-With
"
,
"
XMLHttpRequest
"
);
xhr
.
send
(
data
);
xhr
.
onreadystatechange
=
function
()
{
if
(
xhr
.
readyState
==
4
){
try
{
var
response
=
JSON
.
parse
(
xhr
.
responseText
);
}
catch
(
e
)
{
var
response
=
xhr
.
responseText
;
}
form
.
find
(
'
.has-error
'
).
removeClass
(
'
has-error
'
);
if
(
response
.
success
)
{
if
(
form
.
find
(
'
.message-box
'
).
length
>
0
)
{
form
.
find
(
'
.message-box
'
).
fadeIn
(
'
fast
'
);
form
.
find
(
'
.content
'
).
css
(
'
visibility
'
,
'
hidden
'
);
setTimeout
(
function
(){
form
.
find
(
'
.message-box
'
).
fadeOut
(
'
fast
'
);
form
.
find
(
'
.content
'
).
css
(
'
visibility
'
,
'
visible
'
);
},
2000
);
}
form
.
find
(
'
input:not(.not_clear), textarea
'
).
val
(
''
);
form
.
find
(
'
#files-zone
'
).
html
(
''
);
$
(
'
.dz-preview.dz-processing
'
).
remove
();
dataLayer
.
push
({
'
event
'
:
'
UA_event
'
,
'
Catagory
'
:
form
.
data
(
'
tag
'
),
'
Action
'
:
form
.
data
(
'
title
'
),
'
Label
'
:
'
Успешно
'
$
(
'
.checkbox_btn
'
).
on
(
'
change
'
,
function
(
e
)
{
var
$this
=
$
(
this
);
var
action
=
$this
.
attr
(
"
action
"
);
$
.
ajax
({
type
:
"
get
"
,
url
:
action
,
success
:
function
(
msg
){
$this
.
prop
(
"
checked
"
,
msg
);
var
action_form
=
$this
.
closest
(
'
form
'
).
attr
(
'
action
'
);
$
.
ajax
({
type
:
"
post
"
,
url
:
action_form
,
success
:
function
(
msg
){
$
(
'
section.blog article
'
).
detach
();
$
(
'
section.blog h1
'
).
after
(
msg
.
posts
);
$
(
'
section.blog .loaded
'
).
html
(
''
);
}
});
}
else
{
errors
=
[];
$
.
each
(
response
,
function
(
key
,
value
)
{
form
.
find
(
'
.field-
'
+
key
).
addClass
(
'
has-error
'
);
errors
=
errors
.
concat
(
value
);
});
dataLayer
.
push
({
'
event
'
:
'
UA_event
'
,
'
Catagory
'
:
'
Ошибки
'
,
'
Action
'
:
form
.
data
(
'
form
'
),
'
Label
'
:
errors
});
}
}
}
}).
on
(
'
submit
'
,
function
(
e
){
return
false
;
});
\ No newline at end of file
});
})
\ No newline at end of file
common/modules/blog/controllers/PostController.php
View file @
a5dece2f
...
...
@@ -25,7 +25,9 @@ class PostController extends BaseController
'Load'
=>
'Подгрузка записей'
,
'Tag'
=>
'Просмотр тега'
,
'View'
=>
'Просмотр записи'
,
'Send-article'
=>
'Послать статью'
,
'Send-article'
=>
'Послать статью'
,
'Set-cookie'
=>
'Установить куки'
,
'Tag-index'
=>
'Перезагрузка статей с учетом тэгов'
,
];
}
...
...
@@ -37,7 +39,14 @@ class PostController extends BaseController
{
$this
->
meta_title
=
Yii
::
t
(
'blog'
,
'Art Project Blog'
);
$query
=
Post
::
find
()
->
where
([
'active'
=>
1
])
->
limit
(
Post
::
PAGE_SIZE
)
->
orderBy
(
'created_at DESC'
);
$tag
=
$this
->
getCookie
();
$query
=
Post
::
find
()
->
where
([
'active'
=>
1
])
->
limit
(
Post
::
PAGE_SIZE
)
->
orderBy
(
Post
::
tableName
()
.
'.created_at DESC'
);
if
(
count
(
$tag
))
{
$query
=
$query
->
joinWith
(
'postTagAssigns'
)
->
andWhere
([
PostTagAssign
::
tableName
()
.
'.tag_id'
=>
$tag
]);
}
return
$this
->
render
(
'index'
,
[
'models'
=>
$query
->
all
(),
...
...
@@ -84,7 +93,7 @@ class PostController extends BaseController
'model'
=>
$model
,
]);
}
/**
* @return mixed
*/
...
...
@@ -93,13 +102,13 @@ class PostController extends BaseController
if
(
Yii
::
$app
->
request
->
isAjax
)
{
$offset
=
Yii
::
$app
->
request
->
post
(
'offset'
);
$tag
=
Yii
::
$app
->
request
->
post
(
'tag'
);
$tag
=
$this
->
getCookie
(
);
Yii
::
$app
->
response
->
format
=
Response
::
FORMAT_JSON
;
$query
=
Post
::
find
()
->
where
([
'active'
=>
1
])
->
orderBy
(
Post
::
tableName
()
.
'.created_at DESC'
);
if
(
$tag
)
if
(
count
(
$tag
)
)
{
$query
=
$query
->
joinWith
(
'postTagAssigns'
)
->
andWhere
([
PostTagAssign
::
tableName
()
.
'.tag_id'
=>
$tag
]);
}
...
...
@@ -187,4 +196,73 @@ class PostController extends BaseController
throw
new
NotFoundHttpException
(
'The requested page does not exist.'
);
}
}
/**
* Запишет или удалит хэштэг в куки
* используется на странице блога в списке категорий, для отбора статей по хэштегам
*/
public
function
actionSetCookie
(
$hashtag
)
{
$session
=
Yii
::
$app
->
session
;
if
(
$session
->
isActive
)
{
$cookie
=
$session
->
get
(
'blog_hashtag'
);
$cookie
=
$cookie
?
$cookie
:
[];
$key
=
array_search
(
$hashtag
,
$cookie
);
if
(
$key
!==
false
)
{
unset
(
$cookie
[
$key
]);
$session
->
set
(
'blog_hashtag'
,
$cookie
);
return
false
;
}
else
{
$cookie
[]
=
$hashtag
;
$session
->
set
(
'blog_hashtag'
,
$cookie
);
return
true
;
}
}
}
public
function
getCookie
()
{
$session
=
Yii
::
$app
->
session
;
if
(
$session
->
isActive
)
{
$cookie
=
$session
->
get
(
'blog_hashtag'
);
}
return
empty
(
$cookie
)
?
[]
:
$cookie
;
}
/**
* @param $url
* @return string
* @throws NotFoundHttpException
*
* редерит список статей блога с отбором по хэштегам
*/
public
function
actionTagIndex
()
{
$tag
=
$this
->
getCookie
();
Yii
::
$app
->
response
->
format
=
Response
::
FORMAT_JSON
;
$query
=
Post
::
find
()
->
where
([
'active'
=>
1
])
->
orderBy
(
Post
::
tableName
()
.
'.created_at DESC'
);
if
(
count
(
$tag
))
{
$query
=
$query
->
joinWith
(
'postTagAssigns'
)
->
andWhere
([
PostTagAssign
::
tableName
()
.
'.tag_id'
=>
$tag
]);
}
$models
=
$query
->
limit
(
Post
::
PAGE_SIZE
)
->
offset
(
$offset
)
->
all
();
$count
=
$query
->
count
();
return
[
'posts'
=>
$this
->
renderPartial
(
'_load'
,
[
'models'
=>
$models
,
]),
'count'
=>
(
int
)
$count
,
];
}
}
common/modules/blog/views/post/_sidebar.php
View file @
a5dece2f
...
...
@@ -20,17 +20,18 @@ use common\modules\languages\models\Languages;
->
currentLang
()
->
orderBy
(
'RAND()'
)
->
limit
(
7
)
->
orderBy
(
'name'
)
->
all
();
?>
<?php
if
(
$tags
)
:
?>
<div
class=
"sidebar_module"
>
<h2>
<?=
\Yii
::
t
(
'blog'
,
'Categories'
);
?>
</h2>
<!-- add 22.05.16 -->
<div
class=
"categories_form"
>
<form>
<form
action=
"/blog/post/tag-index"
>
<?
$cookie
=
\Yii
::
$app
->
controller
->
getCookie
()
?>
<?php
foreach
(
$tags
as
$tag
)
:
?>
<input
type=
"checkbox"
class=
"checkbox_btn"
id=
"checkbox-
<?=
$tag
->
id
?>
"
>
<input
<?=
in_array
(
$tag
->
id
,
$cookie
)
?
"checked"
:
""
?>
action=
"
<?=
\yii\helpers\Url
::
to
([
"/blog/post/set-cookie"
,
"hashtag"
=>
$tag
->
id
])
?>
"
type=
"checkbox"
class=
"checkbox_btn"
id=
"checkbox-
<?=
$tag
->
id
?>
"
>
<label
for=
"checkbox-
<?=
$tag
->
id
?>
"
>
<?=
$tag
->
name
?>
</label>
<?php
endforeach
;
?>
</form>
...
...
common/modules/blog/views/post/index.php
View file @
a5dece2f
...
...
@@ -49,4 +49,4 @@ $this->registerJs("initScrollPager()", yii\web\View::POS_END);
<?=
$this
->
render
(
'_modals'
)
?>
<?=
$this
->
render
(
'@app/views/layouts/footer'
);
?>
\ No newline at end of file
<?=
$this
->
render
(
'@app/views/layouts/footer'
);
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment