Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F3313797
markasjunk.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
markasjunk.js
View Options
/**
* Mark-as-Junk plugin script
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) The Roundcube Dev Team
* Copyright (C) Philip Weir
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
rcube_webmail
.
prototype
.
markasjunk_mark
=
function
(
is_spam
)
{
var
uids
=
this
.
env
.
uid
?
[
this
.
env
.
uid
]
:
this
.
message_list
.
get_selection
();
if
(
!
uids
)
return
;
var
lock
=
this
.
set_busy
(
true
,
'loading'
);
this
.
http_post
(
'plugin.markasjunk.'
+
(
is_spam
?
'junk'
:
'not_junk'
),
this
.
selection_post_data
({
_uid
:
uids
}),
lock
);
}
rcube_webmail
.
prototype
.
markasjunk_move
=
function
(
mbox
,
uids
)
{
var
prev_uid
=
this
.
env
.
uid
;
if
(
this
.
message_list
&&
uids
.
length
==
1
&&
!
this
.
message_list
.
in_selection
(
uids
[
0
]))
this
.
env
.
uid
=
uids
[
0
];
if
(
mbox
)
this
.
move_messages
(
mbox
);
else
if
(
this
.
env
.
markasjunk_permanently_remove
==
true
)
this
.
permanently_remove_messages
();
else
this
.
delete_messages
();
this
.
env
.
uid
=
prev_uid
;
}
rcube_webmail
.
prototype
.
markasjunk_toggle_button
=
function
()
{
var
spamobj
=
$
(
'a.junk'
),
hamobj
=
$
(
'a.notjunk'
),
disp
=
{
spam
:
true
,
ham
:
true
};
if
(
this
.
env
.
markasjunk_spam_only
)
{
disp
.
ham
=
false
;
}
else
if
(
!
this
.
is_multifolder_listing
()
&&
this
.
env
.
markasjunk_spam_mailbox
)
{
if
(
this
.
env
.
mailbox
!=
this
.
env
.
markasjunk_spam_mailbox
)
disp
.
ham
=
false
;
else
disp
.
spam
=
false
;
}
// if only 1 button is visible make sure its the last one (for styling)
// allow for multiple instances of the buttons, eg toolbar and contextmenu
$
.
each
(
spamobj
,
function
(
i
)
{
var
cur_spamobj
=
spamobj
.
eq
(
i
),
cur_hamobj
=
hamobj
.
eq
(
i
),
cur_index
=
spamobj
.
eq
(
i
).
index
();
if
(
cur_spamobj
.
parent
(
'li'
).
length
>
0
)
{
cur_spamobj
=
cur_spamobj
.
parent
();
cur_hamobj
=
cur_hamobj
.
parent
();
}
var
evt_rtn
=
rcmail
.
triggerEvent
(
'markasjunk-update'
,
{
objs
:
{
spamobj
:
cur_spamobj
,
hamobj
:
cur_hamobj
},
disp
:
disp
});
if
(
evt_rtn
&&
evt_rtn
.
abort
)
return
;
disp
=
evt_rtn
?
evt_rtn
.
disp
:
disp
;
disp
.
spam
?
cur_spamobj
.
show
()
:
cur_spamobj
.
hide
();
disp
.
ham
?
cur_hamobj
.
show
()
:
cur_hamobj
.
hide
();
if
(
disp
.
spam
&&
!
disp
.
ham
)
{
if
(
cur_index
<
cur_hamobj
.
index
())
{
cur_spamobj
.
insertAfter
(
cur_hamobj
);
}
}
else
if
(
cur_index
>
cur_hamobj
.
index
())
{
cur_hamobj
.
insertAfter
(
cur_spamobj
);
}
});
}
rcube_webmail
.
prototype
.
markasjunk_is_spam_mbox
=
function
()
{
return
!
this
.
is_multifolder_listing
()
&&
this
.
env
.
mailbox
==
this
.
env
.
markasjunk_spam_mailbox
;
}
if
(
window
.
rcmail
)
{
rcmail
.
addEventListener
(
'init'
,
function
()
{
// register command (directly enable in message view mode)
rcmail
.
register_command
(
'plugin.markasjunk.junk'
,
function
()
{
rcmail
.
markasjunk_mark
(
true
);
},
!
rcmail
.
markasjunk_is_spam_mbox
()
&&
rcmail
.
env
.
uid
);
rcmail
.
register_command
(
'plugin.markasjunk.not_junk'
,
function
()
{
rcmail
.
markasjunk_mark
(
false
);
},
rcmail
.
env
.
uid
);
if
(
rcmail
.
message_list
)
{
rcmail
.
message_list
.
addEventListener
(
'select'
,
function
(
list
)
{
rcmail
.
enable_command
(
'plugin.markasjunk.junk'
,
!
rcmail
.
markasjunk_is_spam_mbox
()
&&
list
.
get_selection
(
false
).
length
>
0
);
rcmail
.
enable_command
(
'plugin.markasjunk.not_junk'
,
list
.
get_selection
(
false
).
length
>
0
);
});
}
// make sure the correct icon is displayed even when there is no listupdate event
rcmail
.
markasjunk_toggle_button
();
});
rcmail
.
addEventListener
(
'listupdate'
,
function
()
{
rcmail
.
markasjunk_toggle_button
();
});
rcmail
.
addEventListener
(
'beforemoveto'
,
function
(
mbox
)
{
if
(
mbox
&&
typeof
mbox
===
'object'
)
mbox
=
mbox
.
id
;
var
is_spam
=
null
;
// check if destination mbox equals junk box (and we're not already in the junk box)
if
(
rcmail
.
env
.
markasjunk_move_spam
&&
mbox
&&
mbox
==
rcmail
.
env
.
markasjunk_spam_mailbox
&&
mbox
!=
rcmail
.
env
.
mailbox
)
is_spam
=
true
;
// or if destination mbox equals ham box and we are in the junk box
else
if
(
rcmail
.
env
.
markasjunk_move_ham
&&
mbox
&&
mbox
==
rcmail
.
env
.
markasjunk_ham_mailbox
&&
rcmail
.
env
.
mailbox
==
rcmail
.
env
.
markasjunk_spam_mailbox
)
is_spam
=
false
;
if
(
is_spam
!==
null
)
{
rcmail
.
markasjunk_mark
(
is_spam
);
return
false
;
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 9, 2:39 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
464008
Default Alt Text
markasjunk.js (4 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment