Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Q
question2answer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
outils
question2answer
Commits
1b3b746f
Unverified
Commit
1b3b746f
authored
Dec 08, 2018
by
Scott
Committed by
GitHub
Dec 08, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #608 from pupi1985/patch-104
Use JSON in admin_click AJAX calls
parents
04fd4dc4
c6bce760
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
359 additions
and
38 deletions
+359
-38
qa-admin.js
qa-content/qa-admin.js
+30
-9
qa-global.js
qa-content/qa-global.js
+20
-11
click-admin.php
qa-include/ajax/click-admin.php
+12
-6
admin.php
qa-include/app/admin.php
+260
-7
post-update.php
qa-include/app/post-update.php
+15
-0
post-create.php
qa-include/db/post-create.php
+16
-0
qa-lang-admin.php
qa-include/lang/qa-lang-admin.php
+5
-4
admin-approve.php
qa-include/pages/admin/admin-approve.php
+1
-1
No files found.
qa-content/qa-admin.js
View file @
1b3b746f
...
...
@@ -112,6 +112,27 @@ function qa_mailing_start(noteid, pauseid)
);
}
function
qa_update_dom
(
response
)
{
if
(
!
response
.
hasOwnProperty
(
'domUpdates'
))
{
return
;
}
for
(
var
i
=
0
;
i
<
response
.
domUpdates
.
length
;
i
++
)
{
var
domUpdate
=
response
.
domUpdates
[
i
];
switch
(
domUpdate
.
action
)
{
case
'conceal'
:
qa_conceal
(
document
.
querySelector
(
domUpdate
.
selector
));
break
;
case
'reveal'
:
qa_reveal
(
document
.
querySelector
(
domUpdate
.
selector
));
break
;
default
:
// replace
$
(
domUpdate
.
selector
).
html
(
domUpdate
.
html
);
}
}
}
function
qa_admin_click
(
target
)
{
var
p
=
target
.
name
.
split
(
'_'
);
...
...
@@ -120,15 +141,15 @@ function qa_admin_click(target)
params
.
code
=
target
.
form
.
elements
.
code
.
value
;
qa_ajax_post
(
'click_admin'
,
params
,
function
(
lines
)
{
if
(
lines
[
0
]
==
'1'
)
qa_conceal
(
document
.
getElementById
(
'p'
+
p
[
1
]),
'admin'
);
else
if
(
lines
[
0
]
==
'0
'
)
{
alert
(
lines
[
1
]
);
qa_hide_waiting
(
target
);
}
else
qa_ajax_error
(
);
}
function
(
response
)
{
qa_update_dom
(
response
);
if
(
response
.
result
===
'error'
&&
response
.
error
.
severity
===
'fatal
'
)
{
alert
(
response
.
error
.
message
);
}
qa_hide_waiting
(
target
);
}
,
1
);
qa_show_waiting_after
(
target
,
false
);
...
...
qa-content/qa-global.js
View file @
1b3b746f
...
...
@@ -152,22 +152,31 @@ function qa_favorite_click(elem)
return
false
;
}
function
qa_ajax_post
(
operation
,
params
,
callback
)
function
qa_ajax_post
(
operation
,
params
,
callback
,
version
)
{
$
.
extend
(
params
,
{
qa
:
'ajax'
,
qa_operation
:
operation
,
qa_root
:
qa_root
,
qa_request
:
qa_request
});
if
(
typeof
(
version
)
===
'undefined'
)
{
version
=
0
;
}
$
.
post
(
qa_root
,
params
,
function
(
response
)
{
var
header
=
'QA_AJAX_RESPONSE'
;
var
headerpos
=
response
.
indexOf
(
header
);
$
.
extend
(
params
,
{
qa
:
'ajax'
,
qa_operation
:
operation
,
qa_root
:
qa_root
,
qa_request
:
qa_request
,
version
:
version
});
if
(
headerpos
>=
0
)
callback
(
response
.
substr
(
headerpos
+
header
.
length
).
replace
(
/^
\s
+/
,
''
).
split
(
"
\
n"
));
else
callback
([]
);
$
.
post
(
qa_root
,
params
,
function
(
response
)
{
if
(
version
===
0
)
{
var
header
=
'QA_AJAX_RESPONSE'
;
var
headerpos
=
response
.
indexOf
(
header
);
},
'text'
).
fail
(
function
(
jqXHR
)
{
if
(
headerpos
>=
0
)
callback
(
response
.
substr
(
headerpos
+
header
.
length
).
replace
(
/^
\s
+/
,
''
).
split
(
"
\
n"
));
else
callback
([]);
}
else
{
callback
(
response
);
}
},
version
===
0
?
'text'
:
'json'
).
fail
(
function
(
jqXHR
)
{
if
(
jqXHR
.
readyState
>
0
)
callback
([])
qa_ajax_error
();
});
}
...
...
qa-include/ajax/click-admin.php
View file @
1b3b746f
...
...
@@ -27,9 +27,15 @@ require_once QA_INCLUDE_DIR . 'app/cookies.php';
$entityid
=
qa_post_text
(
'entityid'
);
$action
=
qa_post_text
(
'action'
);
if
(
!
qa_check_form_security_code
(
'admin/click'
,
qa_post_text
(
'code'
)))
echo
"QA_AJAX_RESPONSE
\n
0
\n
"
.
qa_lang
(
'misc/form_security_reload'
);
elseif
(
qa_admin_single_click
(
$entityid
,
$action
))
// permission check happens in here
echo
"QA_AJAX_RESPONSE
\n
1
\n
"
;
else
echo
"QA_AJAX_RESPONSE
\n
0
\n
"
.
qa_lang
(
'main/general_error'
);
if
(
!
qa_check_form_security_code
(
'admin/click'
,
qa_post_text
(
'code'
)))
{
$response
=
array
(
'result'
=>
'error'
,
'error'
=>
array
(
'message'
=>
qa_lang
(
'misc/form_security_reload'
),
),
);
}
else
{
$response
=
qa_admin_single_click_array
(
$entityid
,
$action
);
}
echo
json_encode
(
$response
);
qa-include/app/admin.php
View file @
1b3b746f
This diff is collapsed.
Click to expand it.
qa-include/app/post-update.php
View file @
1b3b746f
...
...
@@ -374,6 +374,10 @@ function qa_question_set_status($oldquestion, $status, $userid, $handle, $cookie
if
(
$wasqueued
||
(
$status
==
QA_POST_STATUS_QUEUED
))
qa_db_queuedcount_update
();
if
(
$event
===
'q_hide'
||
$event
===
'q_reshow'
)
{
qa_db_hiddencount_update
();
}
if
(
$oldquestion
[
'flagcount'
])
qa_db_flaggedcount_update
();
...
...
@@ -536,6 +540,7 @@ function qa_question_delete($oldquestion, $userid, $handle, $cookieid, $oldclose
qa_db_post_delete
(
$oldquestion
[
'postid'
]);
// also deletes any related voteds due to foreign key cascading
qa_update_counts_for_q
(
null
);
qa_db_category_path_qcount_update
(
$oldpath
);
// don't do inside qa_update_counts_for_q() since post no longer exists
qa_db_hiddencount_update
();
qa_db_points_update_ifuser
(
$oldquestion
[
'userid'
],
array
(
'qposts'
,
'aselects'
,
'qvoteds'
,
'upvoteds'
,
'downvoteds'
));
foreach
(
$useridvotes
as
$voteruserid
=>
$vote
)
{
...
...
@@ -764,6 +769,10 @@ function qa_answer_set_status($oldanswer, $status, $userid, $handle, $cookieid,
if
(
$wasqueued
||
$status
==
QA_POST_STATUS_QUEUED
)
qa_db_queuedcount_update
();
if
(
$event
===
'a_hide'
||
$event
===
'a_reshow'
)
{
qa_db_hiddencount_update
();
}
if
(
$oldanswer
[
'flagcount'
])
qa_db_flaggedcount_update
();
...
...
@@ -846,6 +855,7 @@ function qa_answer_delete($oldanswer, $question, $userid, $handle, $cookieid)
}
qa_update_q_counts_for_a
(
$question
[
'postid'
]);
qa_db_hiddencount_update
();
qa_db_points_update_ifuser
(
$oldanswer
[
'userid'
],
array
(
'aposts'
,
'aselecteds'
,
'avoteds'
,
'upvoteds'
,
'downvoteds'
));
foreach
(
$useridvotes
as
$voteruserid
=>
$vote
)
{
...
...
@@ -1151,6 +1161,10 @@ function qa_comment_set_status($oldcomment, $status, $userid, $handle, $cookieid
if
(
$wasqueued
||
$status
==
QA_POST_STATUS_QUEUED
)
qa_db_queuedcount_update
();
if
(
$event
===
'c_hide'
||
$event
===
'c_reshow'
)
{
qa_db_hiddencount_update
();
}
if
(
$oldcomment
[
'flagcount'
])
qa_db_flaggedcount_update
();
...
...
@@ -1234,6 +1248,7 @@ function qa_comment_delete($oldcomment, $question, $parent, $userid, $handle, $c
qa_post_unindex
(
$oldcomment
[
'postid'
]);
qa_db_post_delete
(
$oldcomment
[
'postid'
]);
qa_db_hiddencount_update
();
qa_db_points_update_ifuser
(
$oldcomment
[
'userid'
],
array
(
'cposts'
));
qa_db_ccount_update
();
...
...
qa-include/db/post-create.php
View file @
1b3b746f
...
...
@@ -453,3 +453,19 @@ function qa_db_queuedcount_update()
);
}
}
/**
* Update the cached count in the database of the number of posts which are hidden
*/
function
qa_db_hiddencount_update
()
{
if
(
qa_should_update_counts
())
{
qa_db_query_sub
(
"INSERT INTO ^options (title, content) "
.
"SELECT 'cache_hiddencount', COUNT(*) FROM ^posts "
.
"WHERE type IN ('Q_HIDDEN', 'A_HIDDEN', 'C_HIDDEN') "
.
"ON DUPLICATE KEY UPDATE content = VALUES(content)"
);
}
}
qa-include/lang/qa-lang-admin.php
View file @
1b3b746f
...
...
@@ -37,7 +37,7 @@ return array(
'after_x'
=>
'After "^"'
,
'after_x_tab'
=>
'After "^" tab'
,
'approve_user_popup'
=>
'Approve user'
,
'approve_users_title'
=>
'Approve users'
,
'approve_users_title'
=>
'Approve users
(^)
'
,
'basic_editor'
=>
'Basic Editor'
,
'before_main_menu'
=>
'Before tabs at top'
,
'blobs_directory_error'
=>
'The directory ^ defined as QA_BLOBS_DIRECTORY is not writable by the web server.'
,
...
...
@@ -121,7 +121,7 @@ return array(
'field_single_line'
=>
'Single line of text'
,
'field_type'
=>
'Content type:'
,
'first'
=>
'First'
,
'flagged_title'
=>
'Flagged'
,
'flagged_title'
=>
'Flagged
(^)
'
,
'form_security_expired'
=>
'Form security code expired - please try again'
,
'from_anon'
=>
'From anonymous:'
,
'from_users'
=>
'From users:'
,
...
...
@@ -129,7 +129,7 @@ return array(
'hidden_answers_deleted'
=>
'Deleted ^1 of ^2 hidden answers without dependents...'
,
'hidden_comments_deleted'
=>
'Deleted ^1 of ^2 hidden comments...'
,
'hidden_questions_deleted'
=>
'Deleted ^1 of ^2 hidden questions without dependents...'
,
'hidden_title'
=>
'Hidden'
,
'hidden_title'
=>
'Hidden
(^)
'
,
'hotness_factors'
=>
'Relative importance for question hotness:'
,
'ip_address_pages'
=>
'IP address pages'
,
'layout_title'
=>
'Layout'
,
...
...
@@ -145,7 +145,7 @@ return array(
'maintenance_admin_only'
=>
'Your site is in ^1maintenance^2 and is currently inaccessible to regular users.'
,
'maximum_x'
=>
' (max ^)'
,
'memcached_error'
=>
'Memcached error: ^'
,
'moderate_title'
=>
'Moderate'
,
'moderate_title'
=>
'Moderate
(^)
'
,
'module_x_database_init'
=>
'The ^1 ^2 module requires some ^3database initialization^4.'
,
'most_flagged_title'
=>
'Flagged content'
,
'mysql_version'
=>
'MySQL version:'
,
...
...
@@ -215,6 +215,7 @@ return array(
'recalc_stop'
=>
'Stop recalculating'
,
'recent_approve_title'
=>
'Recent content waiting for approval'
,
'recent_hidden_title'
=>
'Recent hidden content'
,
'recent_users_title'
=>
'Recent users waiting for approval'
,
'recount_posts'
=>
'Recount posts'
,
'recount_posts_as_recounted'
=>
'Recounted answers and hotness for ^1 of ^2 posts...'
,
'recount_posts_complete'
=>
'All posts were successfully recounted.'
,
...
...
qa-include/pages/admin/admin-approve.php
View file @
1b3b746f
...
...
@@ -60,7 +60,7 @@ $pageerror = qa_admin_check_clicks();
$qa_content
=
qa_content_prepare
();
$qa_content
[
'title'
]
=
qa_lang_html
(
'admin/
approve
_users_title'
);
$qa_content
[
'title'
]
=
qa_lang_html
(
'admin/
recent
_users_title'
);
$qa_content
[
'error'
]
=
isset
(
$pageerror
)
?
$pageerror
:
qa_admin_page_error
();
$qa_content
[
'message_list'
]
=
array
(
...
...
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