Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Forum
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lukas.novy
Forum
Commits
1d1a48dc
Verified
Commit
1d1a48dc
authored
2 years ago
by
Andrej Ramašeuski
Browse files
Options
Downloads
Patches
Plain Diff
Cleanup
parent
fbd812f8
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
phpbb/styles/prosilver/template/ajax.js
+0
-381
0 additions, 381 deletions
phpbb/styles/prosilver/template/ajax.js
with
0 additions
and
381 deletions
phpbb/styles/prosilver/template/ajax.js
deleted
100644 → 0
+
0
−
381
View file @
fbd812f8
/* global phpbb */
(
function
(
$
)
{
// Avoid conflicts with other libraries
'
use strict
'
;
// This callback will mark all forum icons read
phpbb
.
addAjaxCallback
(
'
mark_forums_read
'
,
function
(
res
)
{
var
readTitle
=
res
.
NO_UNREAD_POSTS
;
var
unreadTitle
=
res
.
UNREAD_POSTS
;
var
iconsArray
=
{
forum_unread
:
'
forum_read
'
,
forum_unread_subforum
:
'
forum_read_subforum
'
,
forum_unread_locked
:
'
forum_read_locked
'
};
$
(
'
li.row
'
).
find
(
'
dl[class*="forum_unread"]
'
).
each
(
function
()
{
var
$this
=
$
(
this
);
$
.
each
(
iconsArray
,
function
(
unreadClass
,
readClass
)
{
if
(
$this
.
hasClass
(
unreadClass
))
{
$this
.
removeClass
(
unreadClass
).
addClass
(
readClass
);
}
});
$this
.
children
(
'
dt[title="
'
+
unreadTitle
+
'
"]
'
).
attr
(
'
title
'
,
readTitle
);
});
// Mark subforums read
$
(
'
a.subforum[class*="unread"]
'
).
removeClass
(
'
unread
'
).
addClass
(
'
read
'
).
children
(
'
.icon.icon-red
'
).
removeClass
(
'
icon-red
'
).
addClass
(
'
icon-blue
'
);
// Mark topics read if we are watching a category and showing active topics
if
(
$
(
'
#active_topics
'
).
length
)
{
phpbb
.
ajaxCallbacks
.
mark_topics_read
.
call
(
this
,
res
,
false
);
}
// Update mark forums read links
$
(
'
[data-ajax="mark_forums_read"]
'
).
attr
(
'
href
'
,
res
.
U_MARK_FORUMS
);
phpbb
.
closeDarkenWrapper
(
3000
);
});
/**
* This callback will mark all topic icons read
*
* @param {bool} [update_topic_links=true] Whether "Mark topics read" links
* should be updated. Defaults to true.
*/
phpbb
.
addAjaxCallback
(
'
mark_topics_read
'
,
function
(
res
,
updateTopicLinks
)
{
var
readTitle
=
res
.
NO_UNREAD_POSTS
;
var
unreadTitle
=
res
.
UNREAD_POSTS
;
var
iconsArray
=
{
global_unread
:
'
global_read
'
,
announce_unread
:
'
announce_read
'
,
sticky_unread
:
'
sticky_read
'
,
topic_unread
:
'
topic_read
'
};
var
iconsState
=
[
''
,
'
_hot
'
,
'
_hot_mine
'
,
'
_locked
'
,
'
_locked_mine
'
,
'
_mine
'
];
var
unreadClassSelectors
;
var
classMap
=
{};
var
classNames
=
[];
if
(
typeof
updateTopicLinks
===
'
undefined
'
)
{
updateTopicLinks
=
true
;
}
$
.
each
(
iconsArray
,
function
(
unreadClass
,
readClass
)
{
$
.
each
(
iconsState
,
function
(
key
,
value
)
{
// Only topics can be hot
if
((
value
===
'
_hot
'
||
value
===
'
_hot_mine
'
)
&&
unreadClass
!==
'
topic_unread
'
)
{
return
true
;
}
classMap
[
unreadClass
+
value
]
=
readClass
+
value
;
classNames
.
push
(
unreadClass
+
value
);
});
});
unreadClassSelectors
=
'
.
'
+
classNames
.
join
(
'
,.
'
);
$
(
'
li.row
'
).
find
(
unreadClassSelectors
).
each
(
function
()
{
var
$this
=
$
(
this
);
$
.
each
(
classMap
,
function
(
unreadClass
,
readClass
)
{
if
(
$this
.
hasClass
(
unreadClass
))
{
$this
.
removeClass
(
unreadClass
).
addClass
(
readClass
);
}
});
$this
.
children
(
'
dt[title="
'
+
unreadTitle
+
'
"]
'
).
attr
(
'
title
'
,
readTitle
);
});
// Remove link to first unread post
$
(
'
a.unread
'
).
has
(
'
.icon-red
'
).
remove
();
// Update mark topics read links
if
(
updateTopicLinks
)
{
$
(
'
[data-ajax="mark_topics_read"]
'
).
attr
(
'
href
'
,
res
.
U_MARK_TOPICS
);
}
phpbb
.
closeDarkenWrapper
(
3000
);
});
// This callback will mark all notifications read
phpbb
.
addAjaxCallback
(
'
notification.mark_all_read
'
,
function
(
res
)
{
if
(
typeof
res
.
success
!==
'
undefined
'
)
{
phpbb
.
markNotifications
(
$
(
'
#notification_list li.bg2
'
),
0
);
phpbb
.
closeDarkenWrapper
(
3000
);
}
});
// This callback will mark a notification read
phpbb
.
addAjaxCallback
(
'
notification.mark_read
'
,
function
(
res
)
{
if
(
typeof
res
.
success
!==
'
undefined
'
)
{
var
unreadCount
=
Number
(
$
(
'
#notification_list_button strong
'
).
html
())
-
1
;
phpbb
.
markNotifications
(
$
(
this
).
parent
(
'
li.bg2
'
),
unreadCount
);
}
});
/**
* Mark notification popup rows as read.
*
* @param {jQuery} $popup jQuery object(s) to mark read.
* @param {int} unreadCount The new unread notifications count.
*/
phpbb
.
markNotifications
=
function
(
$popup
,
unreadCount
)
{
// Remove the unread status.
$popup
.
removeClass
(
'
bg2
'
);
$popup
.
find
(
'
a.mark_read
'
).
remove
();
// Update the notification link to the real URL.
$popup
.
each
(
function
()
{
var
link
=
$
(
this
).
find
(
'
a
'
);
link
.
attr
(
'
href
'
,
link
.
attr
(
'
data-real-url
'
));
});
// Update the unread count.
$
(
'
strong
'
,
'
#notification_list_button
'
).
html
(
unreadCount
);
// Remove the Mark all read link and hide notification count if there are no unread notifications.
if
(
!
unreadCount
)
{
$
(
'
#mark_all_notifications
'
).
remove
();
$
(
'
#notification_list_button > strong
'
).
addClass
(
'
hidden
'
);
}
// Update page title
var
$title
=
$
(
'
title
'
);
var
originalTitle
=
$title
.
text
().
replace
(
/
(\((\d
+
)\))
/
,
''
);
$title
.
text
((
unreadCount
?
'
(
'
+
unreadCount
+
'
)
'
:
''
)
+
originalTitle
);
};
// This callback finds the post from the delete link, and removes it.
phpbb
.
addAjaxCallback
(
'
post_delete
'
,
function
()
{
var
$this
=
$
(
this
),
postId
;
if
(
$this
.
attr
(
'
data-refresh
'
)
===
undefined
)
{
postId
=
$this
[
0
].
href
.
split
(
'
&p=
'
)[
1
];
var
post
=
$this
.
parents
(
'
#p
'
+
postId
).
css
(
'
pointer-events
'
,
'
none
'
);
if
(
post
.
hasClass
(
'
bg1
'
)
||
post
.
hasClass
(
'
bg2
'
))
{
var
posts1
=
post
.
nextAll
(
'
.bg1
'
);
post
.
nextAll
(
'
.bg2
'
).
removeClass
(
'
bg2
'
).
addClass
(
'
bg1
'
);
posts1
.
removeClass
(
'
bg1
'
).
addClass
(
'
bg2
'
);
}
post
.
fadeOut
(
function
()
{
$
(
this
).
remove
();
});
}
});
// This callback removes the approve / disapprove div or link.
phpbb
.
addAjaxCallback
(
'
post_visibility
'
,
function
(
res
)
{
var
remove
=
(
res
.
visible
)
?
$
(
this
)
:
$
(
this
).
parents
(
'
.post
'
);
$
(
remove
).
css
(
'
pointer-events
'
,
'
none
'
).
fadeOut
(
function
()
{
$
(
this
).
remove
();
});
if
(
res
.
visible
)
{
// Remove the "Deleted by" message from the post on restoring.
remove
.
parents
(
'
.post
'
).
find
(
'
.post_deleted_msg
'
).
css
(
'
pointer-events
'
,
'
none
'
).
fadeOut
(
function
()
{
$
(
this
).
remove
();
});
}
});
// This removes the parent row of the link or form that fired the callback.
phpbb
.
addAjaxCallback
(
'
row_delete
'
,
function
()
{
$
(
this
).
parents
(
'
tr
'
).
remove
();
});
// This handles friend / foe additions removals.
phpbb
.
addAjaxCallback
(
'
zebra
'
,
function
(
res
)
{
var
zebra
;
if
(
res
.
success
)
{
zebra
=
$
(
'
.zebra
'
);
zebra
.
first
().
html
(
res
.
MESSAGE_TEXT
);
zebra
.
not
(
'
:first
'
).
html
(
'
'
).
prev
().
html
(
'
'
);
}
});
/**
* This callback updates the poll results after voting.
*/
phpbb
.
addAjaxCallback
(
'
vote_poll
'
,
function
(
res
)
{
if
(
typeof
res
.
success
!==
'
undefined
'
)
{
var
poll
=
$
(
this
).
closest
(
'
.topic_poll
'
);
var
panel
=
poll
.
find
(
'
.panel
'
);
var
resultsVisible
=
poll
.
find
(
'
dl:first-child .resultbar
'
).
is
(
'
:visible
'
);
var
mostVotes
=
0
;
// Set min-height to prevent the page from jumping when the content changes
var
updatePanelHeight
=
function
(
height
)
{
height
=
(
typeof
height
===
'
undefined
'
)
?
panel
.
find
(
'
.inner
'
).
outerHeight
()
:
height
;
panel
.
css
(
'
min-height
'
,
height
);
};
updatePanelHeight
();
// Remove the View results link
if
(
!
resultsVisible
)
{
poll
.
find
(
'
.poll_view_results
'
).
hide
(
500
);
}
if
(
!
res
.
can_vote
)
{
poll
.
find
(
'
.polls, .poll_max_votes, .poll_vote, .poll_option_select
'
).
fadeOut
(
500
,
function
()
{
poll
.
find
(
'
.resultbar, .poll_option_percent, .poll_total_votes
'
).
show
();
});
}
else
{
// If the user can still vote, simply slide down the results
poll
.
find
(
'
.resultbar, .poll_option_percent, .poll_total_votes
'
).
show
(
500
);
}
// Get the votes count of the highest poll option
poll
.
find
(
'
[data-poll-option-id]
'
).
each
(
function
()
{
var
option
=
$
(
this
);
var
optionId
=
option
.
attr
(
'
data-poll-option-id
'
);
mostVotes
=
(
res
.
vote_counts
[
optionId
]
>=
mostVotes
)
?
res
.
vote_counts
[
optionId
]
:
mostVotes
;
});
// Update the total votes count
poll
.
find
(
'
.poll_total_vote_cnt
'
).
html
(
res
.
total_votes
);
// Update each option
poll
.
find
(
'
[data-poll-option-id]
'
).
each
(
function
()
{
var
$this
=
$
(
this
);
var
optionId
=
$this
.
attr
(
'
data-poll-option-id
'
);
var
voted
=
(
typeof
res
.
user_votes
[
optionId
]
!==
'
undefined
'
);
var
mostVoted
=
(
res
.
vote_counts
[
optionId
]
===
mostVotes
);
var
percent
=
(
!
res
.
total_votes
)
?
0
:
Math
.
round
((
res
.
vote_counts
[
optionId
]
/
res
.
total_votes
)
*
100
);
var
percentRel
=
(
mostVotes
===
0
)
?
0
:
Math
.
round
((
res
.
vote_counts
[
optionId
]
/
mostVotes
)
*
100
);
var
altText
;
altText
=
$this
.
attr
(
'
data-alt-text
'
);
if
(
voted
)
{
$this
.
attr
(
'
title
'
,
$
.
trim
(
altText
));
}
else
{
$this
.
attr
(
'
title
'
,
''
);
};
$this
.
toggleClass
(
'
voted
'
,
voted
);
$this
.
toggleClass
(
'
most-votes
'
,
mostVoted
);
// Update the bars
var
bar
=
$this
.
find
(
'
.resultbar div
'
);
var
barTimeLapse
=
(
res
.
can_vote
)
?
500
:
1500
;
var
newBarClass
=
(
percent
===
100
)
?
'
pollbar5
'
:
'
pollbar
'
+
(
Math
.
floor
(
percent
/
20
)
+
1
);
setTimeout
(
function
()
{
bar
.
animate
({
width
:
percentRel
+
'
%
'
},
500
)
.
removeClass
(
'
pollbar1 pollbar2 pollbar3 pollbar4 pollbar5
'
)
.
addClass
(
newBarClass
)
.
html
(
res
.
vote_counts
[
optionId
]);
var
percentText
=
percent
?
percent
+
'
%
'
:
res
.
NO_VOTES
;
$this
.
find
(
'
.poll_option_percent
'
).
html
(
percentText
);
},
barTimeLapse
);
});
if
(
!
res
.
can_vote
)
{
poll
.
find
(
'
.polls
'
).
delay
(
400
).
fadeIn
(
500
);
}
// Display "Your vote has been cast." message. Disappears after 5 seconds.
var
confirmationDelay
=
(
res
.
can_vote
)
?
300
:
900
;
poll
.
find
(
'
.vote-submitted
'
).
delay
(
confirmationDelay
).
slideDown
(
200
,
function
()
{
if
(
resultsVisible
)
{
updatePanelHeight
();
}
$
(
this
).
delay
(
5000
).
fadeOut
(
500
,
function
()
{
resizePanel
(
300
);
});
});
// Remove the gap resulting from removing options
setTimeout
(
function
()
{
resizePanel
(
500
);
},
1500
);
var
resizePanel
=
function
(
time
)
{
var
panelHeight
=
panel
.
height
();
var
innerHeight
=
panel
.
find
(
'
.inner
'
).
outerHeight
();
if
(
panelHeight
!==
innerHeight
)
{
panel
.
css
({
minHeight
:
''
,
height
:
panelHeight
})
.
animate
({
height
:
innerHeight
},
time
,
function
()
{
panel
.
css
({
minHeight
:
innerHeight
,
height
:
''
});
});
}
};
}
});
$
(
'
[data-ajax]
'
).
each
(
function
()
{
var
$this
=
$
(
this
);
var
ajax
=
$this
.
attr
(
'
data-ajax
'
);
var
filter
=
$this
.
attr
(
'
data-filter
'
);
if
(
ajax
!==
'
false
'
)
{
var
fn
=
(
ajax
!==
'
true
'
)
?
ajax
:
null
;
filter
=
(
filter
!==
undefined
)
?
phpbb
.
getFunctionByName
(
filter
)
:
null
;
phpbb
.
ajaxify
({
selector
:
this
,
refresh
:
$this
.
attr
(
'
data-refresh
'
)
!==
undefined
,
filter
:
filter
,
callback
:
fn
});
}
});
/**
* This simply appends #preview to the action of the
* QR action when you click the Full Editor & Preview button
*/
$
(
'
#qr_full_editor
'
).
click
(
function
()
{
$
(
'
#qr_postform
'
).
attr
(
'
action
'
,
function
(
i
,
val
)
{
return
val
+
'
#preview
'
;
});
});
/**
* Make the display post links to use JS
*/
$
(
'
.display_post
'
).
click
(
function
(
e
)
{
// Do not follow the link
e
.
preventDefault
();
var
postId
=
$
(
this
).
attr
(
'
data-post-id
'
);
$
(
'
#post_content
'
+
postId
).
show
();
$
(
'
#profile
'
+
postId
).
show
();
$
(
'
#post_hidden
'
+
postId
).
hide
();
});
/**
* Toggle the member search panel in memberlist.php.
*
* If user returns to search page after viewing results the search panel is automatically displayed.
* In any case the link will toggle the display status of the search panel and link text will be
* appropriately changed based on the status of the search panel.
*/
$
(
'
#member_search
'
).
click
(
function
()
{
var
$memberlistSearch
=
$
(
'
#memberlist_search
'
);
$memberlistSearch
.
slideToggle
(
'
fast
'
);
phpbb
.
ajaxCallbacks
.
alt_text
.
call
(
this
);
// Focus on the username textbox if it's available and displayed
if
(
$memberlistSearch
.
is
(
'
:visible
'
))
{
$
(
'
#username
'
).
focus
();
}
return
false
;
});
/**
* Automatically resize textarea
*/
$
(
function
()
{
var
$textarea
=
$
(
'
textarea:not(#message-box textarea, .no-auto-resize)
'
);
phpbb
.
resizeTextArea
(
$textarea
,
{
minHeight
:
75
,
maxHeight
:
250
});
phpbb
.
resizeTextArea
(
$
(
'
textarea
'
,
'
#message-box
'
));
});
})(
jQuery
);
// Avoid conflicts with other libraries
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment