Changeset aca2f57


Ignore:
Timestamp:
Dec 14, 2017 11:48:14 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
c2a1d79
Parents:
0ec39e5
Message:

SusiMail?: Fix interactions between single-delete and multi-delete,
P-R-G for single-delete, don't store single-delete in session,
add cancel button for single-delete (ticket #1373)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/susimail/src/src/i2p/susi/webmail/WebMail.java

    r0ec39e5 raca2f57  
    442442                public StringBuilder sentMail;
    443443                public ArrayList<Attachment> attachments;
     444                // This is only for multi-delete. Single-message delete is handled with P-R-G
    444445                public boolean reallyDelete;
    445446                String themePath, imgPath;
     
    998999                        if( buttonPressed( request, LIST ) ) {
    9991000                                sessionObject.state = STATE_LIST;
    1000                         } else if (buttonPressed( request, CANCEL ) ||
     1001                        } else if (
    10011002                            buttonPressed( request, PREVPAGE ) ||    // All these buttons are not shown but we could be lost
    10021003                            buttonPressed( request, NEXTPAGE ) ||
     
    12091210        {
    12101211                // these two buttons are only on the folder view now
     1212/**** All RELOAD buttons are commented out
    12111213                if( buttonPressed( request, RELOAD ) ) {
    12121214                        Config.reloadConfiguration();
     
    12171219                        sessionObject.info = _t("Configuration reloaded");
    12181220                }
     1221****/
    12191222                if( buttonPressed( request, REFRESH ) ) {
    12201223                        POP3MailBox mailbox = sessionObject.mailbox;
     
    13191322         * @param sessionObject
    13201323         * @param request
    1321          * @return the next UIDL to see (if PREV/NEXT pushed), or null (if REALLYDELETE pushed), or showUIDL
     1324         * @return the next UIDL to see (if PREV/NEXT pushed), or null (if REALLYDELETE pushed), or showUIDL,
     1325         *         or "delete" (if DELETE pushed)
    13221326         */
    13231327        private static String processMessageButtons(SessionObject sessionObject, String showUIDL, RequestWrapper request)
     
    13381342                }
    13391343               
    1340                 sessionObject.reallyDelete = buttonPressed( request, DELETE );
     1344                if (buttonPressed(request, DELETE)) {
     1345                        // processRequest() will P-R-G to &delete=1
     1346                        // We do not keep this indication in the session object.
     1347                        return DELETE;
     1348                }
    13411349                if( buttonPressed( request, REALLYDELETE ) ) {
    13421350                        sessionObject.state = STATE_LIST;
     
    14831491                        page = sessionObject.folder.getPages();
    14841492                }
    1485                 else if( buttonPressed( request, DELETE ) ) {
     1493
     1494                if (buttonPressed(request, DELETE)) {
    14861495                        int m = getCheckedItems(request).size();
    1487                         if (m > 0)
     1496                        if (m > 0) {
    14881497                                sessionObject.reallyDelete = true;
    1489                         else
     1498                        } else {
     1499                                sessionObject.reallyDelete = false;
    14901500                                sessionObject.error += _t("No messages marked for deletion.") + '\n';
     1501                        }
    14911502                }
    14921503                else {
     
    17651776                                        // LIST is from SHOW page, SEND and CANCEL are from NEW page
    17661777                                        // OFFLINE and LOGIN from login page
     1778                                        // TODO - REFRESH on list page
    17671779                                        if (newPage != page || buttonPressed(request, LIST) ||
    17681780                                            buttonPressed(request, SEND) || buttonPressed(request, CANCEL) ||
     
    18041816                                             buttonPressed(request, SEND) || buttonPressed(request, CANCEL))) {
    18051817                                                // P-R-G
    1806                                                 String q = '?' + B64UIDL + '=' + Base64.encode(newShowUIDL);
     1818                                                String q;
     1819                                                if (newShowUIDL.equals(DELETE))
     1820                                                        q = '?' + DELETE + "=1&" + SHOW + '=' + Base64.encode(showUIDL);
     1821                                                else
     1822                                                        q = '?' + SHOW + '=' + Base64.encode(newShowUIDL);
    18071823                                                sendRedirect(httpRequest, response, q);
    18081824                                                return;
     
    19501966                               
    19511967                                else if( sessionObject.state == STATE_SHOW )
    1952                                         showMessage(out, sessionObject, showUIDL);
     1968                                        showMessage(out, sessionObject, showUIDL, buttonPressed(request, DELETE));
    19531969                               
    19541970                                else if( sessionObject.state == STATE_NEW )
     
    25752591         * @param out
    25762592         * @param sessionObject
    2577          */
    2578         private static void showMessage(PrintWriter out, SessionObject sessionObject, String showUIDL)
     2593         * @param reallyDelete was the delete button pushed, if so, show the really delete? message
     2594         */
     2595        private static void showMessage(PrintWriter out, SessionObject sessionObject, String showUIDL, boolean reallyDelete)
    25792596        {
    2580                 if( sessionObject.reallyDelete ) {
    2581                         out.println( "<p class=\"error\">" + _t("Really delete this message?") + " " + button( REALLYDELETE, _t("Yes, really delete it!") ) + "</p>" );
     2597                if (reallyDelete) {
     2598                        out.println( "<p class=\"error\">" + _t("Really delete this message?") + ' ' +
     2599                                     button(REALLYDELETE, _t("Yes, really delete it!")) + ' ' +
     2600                                     button(CANCEL, _t("Cancel")) +
     2601                                     "</p>");
    25822602                }
    25832603                Mail mail = sessionObject.mailCache.getMail(showUIDL, MailCache.FetchMode.ALL);
     
    25852605                        out.println( "<!--" );
    25862606                        out.println( "Debug: Mail header and body follow");
    2587                         // FIXME encoding, escaping --, etc... but disabled.
    25882607                        ReadBuffer body = mail.getBody();
    25892608                        out.println(quoteHTML(new String(body.content, body.offset, body.length)).replace("--", "&mdash;"));
Note: See TracChangeset for help on using the changeset viewer.