Example usage for org.apache.wicket.behavior AbstractAjaxBehavior getCallbackUrl

List of usage examples for org.apache.wicket.behavior AbstractAjaxBehavior getCallbackUrl

Introduction

In this page you can find the example usage for org.apache.wicket.behavior AbstractAjaxBehavior getCallbackUrl.

Prototype

public CharSequence getCallbackUrl() 

Source Link

Document

Gets the url that references this handler.

Usage

From source file:com.google.code.jqwicket.api.JQuery.java

License:Apache License

/**
 * Creates JQStatement to invoke the respond method of the given
 * {@link AbstractAjaxBehavior} via ajax.
 * /*  w  w w  . j av  a 2s .co m*/
 * @param behave
 * @param params
 * @return
 */
public static final IJQStatement wicketAjaxGet(AbstractAjaxBehavior behave, Map<String, Object> params) {
    return wicketAjaxGet(behave.getCallbackUrl(), params);
}

From source file:com.google.code.jqwicket.api.JQuery.java

License:Apache License

/**
 * Creates JQStatement to invoke the respond method of the given
 * {@link AbstractAjaxBehavior} via ajax.
 * //w  w w .j a  va  2 s .  c  o  m
 * @param behave
 * @param params
 * @param successHandler
 * @param failureHandler
 * @return
 */
public static final IJQStatement wicketAjaxGet(AbstractAjaxBehavior behave, Map<String, Object> params,
        IJQFunction successHandler, IJQFunction failureHandler) {
    return wicketAjaxGet(behave.getCallbackUrl(), params, successHandler, failureHandler);
}

From source file:com.servoy.j2db.server.headlessclient.WebClientsApplication.java

License:Open Source License

/**
 * @see wicket.protocol.http.WebApplication#init()
 *//*from   w ww .  j  a  v a2s . co m*/
@Override
protected void init() {
    if (ApplicationServerRegistry.get() == null)
        return; // TODO this is a workaround to allow mobile test client that only starts Tomcat not to give exceptions (please remove if mobile test client initialises a full app. server in the future)

    getResourceSettings().setResourceWatcher(new ServoyModificationWatcher(Duration.seconds(5)));
    //      getResourceSettings().setResourcePollFrequency(Duration.seconds(5));
    getResourceSettings().setAddLastModifiedTimeToResourceReferenceUrl(true);
    getResourceSettings().setDefaultCacheDuration((int) Duration.days(365).seconds());
    getMarkupSettings().setCompressWhitespace(true);
    getMarkupSettings().setMarkupCache(new ServoyMarkupCache(this));
    // getMarkupSettings().setStripWicketTags(true);
    getResourceSettings().setResourceStreamLocator(new ServoyResourceStreamLocator(this));
    getResourceSettings().setPackageResourceGuard(new ServoyPackageResourceGuard());
    // getResourceSettings().setResourceFinder(createResourceFinder());
    getResourceSettings().setThrowExceptionOnMissingResource(false);
    getApplicationSettings().setPageExpiredErrorPage(ServoyExpiredPage.class);
    getApplicationSettings().setClassResolver(new ServoyClassResolver());
    getSessionSettings().setMaxPageMaps(15);
    //      getRequestCycleSettings().setGatherExtendedBrowserInfo(true);

    getSecuritySettings().setCryptFactory(new CachingKeyInSessionSunJceCryptFactory());

    Settings settings = Settings.getInstance();
    getDebugSettings().setOutputComponentPath(
            Utils.getAsBoolean(settings.getProperty("servoy.webclient.debug.wicketpath", "false"))); //$NON-NLS-1$ //$NON-NLS-2$
    if (Utils.getAsBoolean(settings.getProperty("servoy.webclient.nice.urls", "false"))) //$NON-NLS-1$ //$NON-NLS-2$
    {
        mount(new HybridUrlCodingStrategy("/solutions", SolutionLoader.class)); //$NON-NLS-1$
        mount(new HybridUrlCodingStrategy("/application", MainPage.class)); //$NON-NLS-1$
        mount(new HybridUrlCodingStrategy("/ss", SolutionLoader.class) //$NON-NLS-1$
        {
            /**
             * @see wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy#matches(wicket.IRequestTarget)
             */
            @Override
            public boolean matches(IRequestTarget requestTarget) {
                return false;
            }
        });
    } else {
        mountBookmarkablePage("/solutions", SolutionLoader.class); //$NON-NLS-1$
        mount(new BookmarkablePageRequestTargetUrlCodingStrategy("/ss", SolutionLoader.class, null) //$NON-NLS-1$
        {
            /**
             * @see wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy#matches(wicket.IRequestTarget)
             */
            @Override
            public boolean matches(IRequestTarget requestTarget) {
                return false;
            }
        });
    }

    long maxSize = Utils.getAsLong(settings.getProperty("servoy.webclient.maxuploadsize", "0"), false); //$NON-NLS-1$ //$NON-NLS-2$
    if (maxSize > 0) {
        getApplicationSettings().setDefaultMaximumUploadSize(Bytes.kilobytes(maxSize));
    }

    getSharedResources().putClassAlias(IApplication.class, "application"); //$NON-NLS-1$
    getSharedResources().putClassAlias(PageContributor.class, "pc"); //$NON-NLS-1$
    getSharedResources().putClassAlias(MaskBehavior.class, "mask"); //$NON-NLS-1$
    getSharedResources().putClassAlias(Application.class, "servoy"); //$NON-NLS-1$
    getSharedResources().putClassAlias(org.wicketstuff.calendar.markup.html.form.DatePicker.class,
            "datepicker"); //$NON-NLS-1$
    getSharedResources().putClassAlias(YUILoader.class, "yui"); //$NON-NLS-1$
    getSharedResources().putClassAlias(JQueryLoader.class, "jquery"); //$NON-NLS-1$
    getSharedResources().putClassAlias(TinyMCELoader.class, "tinymce"); //$NON-NLS-1$
    getSharedResources().putClassAlias(org.apache.wicket.markup.html.WicketEventReference.class, "wicketevent"); //$NON-NLS-1$
    getSharedResources().putClassAlias(org.apache.wicket.ajax.WicketAjaxReference.class, "wicketajax"); //$NON-NLS-1$
    getSharedResources().putClassAlias(MainPage.class, "servoyjs"); //$NON-NLS-1$
    getSharedResources().putClassAlias(org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow.class,
            "modalwindow"); //$NON-NLS-1$

    PackageResource.bind(this, IApplication.class, "images/open_project.gif"); //$NON-NLS-1$
    PackageResource.bind(this, IApplication.class, "images/save.gif"); //$NON-NLS-1$

    mountSharedResource("/formcss", "servoy/formcss"); //$NON-NLS-1$//$NON-NLS-2$

    sharedMediaResource = new SharedMediaResource();
    getSharedResources().add("media", sharedMediaResource); //$NON-NLS-1$

    mount(new SharedResourceRequestTargetUrlCodingStrategy("mediafolder", "servoy/media") //$NON-NLS-1$ //$NON-NLS-2$
    {
        @Override
        protected void appendParameters(AppendingStringBuffer url, Map<String, ?> parameters) {
            if (parameters != null && parameters.size() > 0) {
                Object solutionName = parameters.get("s"); //$NON-NLS-1$
                if (solutionName != null)
                    appendPathParameter(url, null, solutionName.toString());
                Object resourceId = parameters.get("id"); //$NON-NLS-1$
                if (resourceId != null)
                    appendPathParameter(url, null, resourceId.toString());

                StringBuilder queryParams = new StringBuilder();
                for (Entry<?, ?> entry1 : parameters.entrySet()) {
                    Object value = ((Entry<?, ?>) entry1).getValue();
                    if (value != null) {
                        Object key = ((Entry<?, ?>) entry1).getKey();
                        if (!"s".equals(key) && !"id".equals(key)) //$NON-NLS-1$ //$NON-NLS-2$
                        {
                            if (value instanceof String[]) {
                                String[] values = (String[]) value;
                                for (String value1 : values) {
                                    if (queryParams.length() > 0)
                                        queryParams.append("&"); //$NON-NLS-1$
                                    queryParams.append(key).append("=").append(value1);//$NON-NLS-1$
                                }
                            } else {
                                if (queryParams.length() > 0)
                                    queryParams.append("&"); //$NON-NLS-1$
                                queryParams.append(key).append("=").append(value);//$NON-NLS-1$
                            }
                        }
                    }
                }
                if (queryParams.length() > 0) {
                    url.append("?").append(queryParams);//$NON-NLS-1$
                }
            }
        }

        @Override
        protected void appendPathParameter(AppendingStringBuffer url, String key, String value) {
            String escapedValue = value;
            String[] values = escapedValue.split("/");//$NON-NLS-1$
            if (values.length > 1) {
                StringBuilder sb = new StringBuilder(escapedValue.length());
                for (String str : values) {
                    sb.append(urlEncodePathComponent(str));
                    sb.append('/');
                }
                sb.setLength(sb.length() - 1);
                escapedValue = sb.toString();
            } else {
                escapedValue = urlEncodePathComponent(escapedValue);
            }

            if (!Strings.isEmpty(escapedValue)) {
                if (!url.endsWith("/"))//$NON-NLS-1$
                {
                    url.append("/");//$NON-NLS-1$
                }
                if (key != null)
                    url.append(urlEncodePathComponent(key)).append("/");//$NON-NLS-1$
                url.append(escapedValue);
            }
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#decodeParameters(java.lang.String, java.util.Map)
         */
        @Override
        protected ValueMap decodeParameters(String urlFragment, Map<String, ?> urlParameters) {
            ValueMap map = new ValueMap();
            final String[] pairs = urlFragment.split("/"); //$NON-NLS-1$
            if (pairs.length > 1) {
                map.add("s", pairs[1]); //$NON-NLS-1$
                StringBuffer sb = new StringBuffer();
                for (int i = 2; i < pairs.length; i++) {
                    sb.append(pairs[i]);
                    sb.append("/"); //$NON-NLS-1$
                }
                sb.setLength(sb.length() - 1);
                map.add("id", sb.toString()); //$NON-NLS-1$
            }
            if (urlParameters != null) {
                map.putAll(urlParameters);
            }
            return map;
        }
    });

    getSharedResources().add("resources", new ServeResources()); //$NON-NLS-1$

    getSharedResources().add("formcss", new FormCssResource(this)); //$NON-NLS-1$

    if (settings.getProperty("servoy.webclient.error.page", null) != null) //$NON-NLS-1$
    {
        getApplicationSettings().setInternalErrorPage(ServoyErrorPage.class);
    }
    if (settings.getProperty("servoy.webclient.pageexpired.page", null) != null) //$NON-NLS-1$
    {
        getApplicationSettings().setPageExpiredErrorPage(ServoyPageExpiredPage.class);
    }

    addPreComponentOnBeforeRenderListener(new IComponentOnBeforeRenderListener() {
        public void onBeforeRender(Component component) {
            if (component instanceof IServoyAwareBean) {
                IModel model = component.getInnermostModel();
                WebForm webForm = component.findParent(WebForm.class);
                if (model instanceof RecordItemModel && webForm != null) {
                    IRecord record = (IRecord) ((RecordItemModel) model).getObject();
                    FormScope fs = webForm.getController().getFormScope();

                    if (record != null && fs != null) {
                        ((IServoyAwareBean) component).setSelectedRecord(new ServoyBeanState(record, fs));
                    }
                }
            } else {
                if (!component.isEnabled()) {
                    boolean hasOnRender = (component instanceof IFieldComponent
                            && ((IFieldComponent) component)
                                    .getScriptObject() instanceof ISupportOnRenderCallback
                            && ((ISupportOnRenderCallback) ((IFieldComponent) component).getScriptObject())
                                    .getRenderEventExecutor().hasRenderCallback());
                    if (!hasOnRender) {
                        // onrender may change the enable state
                        return;
                    }
                }
                Component targetComponent = null;
                boolean hasFocus = false, hasBlur = false;
                if (component instanceof IFieldComponent
                        && ((IFieldComponent) component).getEventExecutor() != null) {
                    targetComponent = component;
                    if (component instanceof WebBaseSelectBox) {
                        Component[] cs = ((WebBaseSelectBox) component).getFocusChildren();
                        if (cs != null && cs.length == 1)
                            targetComponent = cs[0];
                    }
                    if (component instanceof WebDataHtmlArea)
                        hasFocus = true;

                    // always install a focus handler when in a table view to detect change of selectedIndex and test for record validation
                    if (((IFieldComponent) component).getEventExecutor().hasEnterCmds()
                            || component.findParent(WebCellBasedView.class) != null
                            || (((IFieldComponent) component)
                                    .getScriptObject() instanceof ISupportOnRenderCallback
                                    && ((ISupportOnRenderCallback) ((IFieldComponent) component)
                                            .getScriptObject()).getRenderEventExecutor().hasRenderCallback())) {
                        hasFocus = true;
                    }
                    // Always trigger event on focus lost:
                    // 1) check for new selected index, record validation may have failed preventing a index changed
                    // 2) prevent focus gained to be called when field validation failed
                    // 3) general ondata change
                    hasBlur = true;
                } else if (component instanceof WebBaseLabel) {
                    targetComponent = component;
                    hasFocus = true;
                }

                if (targetComponent != null) {
                    MainPage mainPage = targetComponent.findParent(MainPage.class);
                    if (mainPage.isUsingAjax()) {
                        AbstractAjaxBehavior eventCallback = mainPage.getPageContributor().getEventCallback();
                        if (eventCallback != null) {
                            String callback = eventCallback.getCallbackUrl().toString();
                            if (component instanceof WebDataRadioChoice
                                    || component instanceof WebDataCheckBoxChoice
                                    || component instanceof WebDataLookupField
                                    || component instanceof WebDataComboBox
                                    || component instanceof WebDataListBox
                                    || component instanceof WebDataHtmlArea) {
                                // is updated via ServoyChoiceComponentUpdatingBehavior or ServoyFormComponentUpdatingBehavior, this is just for events
                                callback += "&nopostdata=true";
                            }
                            for (IBehavior behavior : targetComponent.getBehaviors()) {
                                if (behavior instanceof EventCallbackModifier) {
                                    targetComponent.remove(behavior);
                                }
                            }
                            if (hasFocus) {
                                StringBuilder js = new StringBuilder();
                                js.append("eventCallback(this,'focus','").append(callback).append("',event)"); //$NON-NLS-1$ //$NON-NLS-2$
                                targetComponent.add(new EventCallbackModifier("onfocus", true, //$NON-NLS-1$
                                        new Model<String>(js.toString())));
                                targetComponent.add(new EventCallbackModifier("onmousedown", true, //$NON-NLS-1$
                                        new Model<String>("focusMousedownCallback(event)"))); //$NON-NLS-1$
                            }
                            if (hasBlur) {
                                boolean blockRequest = false;
                                // if component has ondatachange, check for blockrequest
                                if (component instanceof ISupportEventExecutor
                                        && ((ISupportEventExecutor) component).getEventExecutor()
                                                .hasChangeCmd()) {
                                    WebClientSession webClientSession = WebClientSession.get();
                                    blockRequest = webClientSession != null && webClientSession.blockRequest();
                                }

                                StringBuilder js = new StringBuilder();
                                js.append("postEventCallback(this,'blur','").append(callback) //$NON-NLS-1$
                                        .append("',event," + blockRequest + ")"); //$NON-NLS-1$
                                targetComponent.add(new EventCallbackModifier("onblur", true, //$NON-NLS-1$
                                        new Model<String>(js.toString())));
                            }
                        }
                    }
                }
            }
        }
    });
}

From source file:org.hippoecm.frontend.plugins.ckeditor.CKEditorPanelPickerExtension.java

License:Apache License

private static void addCallbackUrl(final JSONObject config, String key, AbstractAjaxBehavior callback)
        throws JSONException {
    final String callbackUrl = callback.getCallbackUrl().toString();
    config.put(key, callbackUrl);// w  w  w .  ja  v a  2 s  .  c  om
}

From source file:org.sakaiproject.dash.tool.pages.DashboardMobilePage.java

License:Educational Community License

public DashboardMobilePage() {

    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VISIT,
            "/dashboard/page/" + sakaiProxy.getCurrentSiteId());

    final WebMarkupContainer dashboardPage = new WebMarkupContainer("dashboard-page");
    dashboardPage.setOutputMarkupId(true);
    add(dashboardPage);//from   w ww . jav  a2  s  . c o m

    MOTDPanel motdPanel = new MOTDPanel("motdPanel");
    motdPanel.setOutputMarkupId(true);
    dashboardPage.add(motdPanel);

    CalendarLinksPanel calendarPanel = new CalendarLinksPanel("calendarPanel");
    calendarPanel.setOutputMarkupId(true);
    dashboardPage.add(calendarPanel);

    NewsLinksPanel newsPanel = new NewsLinksPanel("newsPanel");
    newsPanel.setOutputMarkupId(true);
    dashboardPage.add(newsPanel);

    AbstractAjaxBehavior entityDetailRequest = new AbstractAjaxBehavior() {

        public void onRequest() {

            logger.debug("entityDetailRequest.onClick() ");

            //get parameters
            final RequestCycle requestCycle = RequestCycle.get();

            WebRequest wr = (WebRequest) requestCycle.getRequest();

            HttpServletRequest hsr = wr.getHttpServletRequest();

            String entityReference = null;
            String entityType = null;
            int itemCount = 0;
            int offset = -1;
            String dashEvent = null;
            try {
                BufferedReader br = hsr.getReader();

                String jsonString = br.readLine();
                if ((jsonString == null) || jsonString.isEmpty()) {
                    logger.error(" no json found for entityReference: " + entityReference);
                } else {
                    if (logger.isDebugEnabled()) {
                        logger.debug(" json  is :" + jsonString);
                    }
                    JSONObject jsonObject = JSONObject.fromObject(jsonString);

                    entityReference = jsonObject.optString("entityReference", "");
                    entityType = jsonObject.optString("entityType", "");
                    itemCount = jsonObject.optInt("itemCount", 1);
                    dashEvent = jsonObject.optString("dashEvent", "");
                    offset = jsonObject.optInt("offset", -1);
                }

            } catch (IOException ex) {
                logger.error(ex);
            }

            Locale locale = hsr.getLocale();
            if (entityReference != null && !entityReference.trim().equals("") && entityType != null
                    && !entityType.trim().equals("")) {
                if (itemCount > 1) {
                    ResourceLoader rl = new ResourceLoader("dash_entity");
                    int limit = dashboardConfig.getConfigValue(DashboardConfig.PROP_DEFAULT_ITEMS_IN_DISCLOSURE,
                            20);
                    if (offset < 0) {
                        offset = 0;
                    }
                    String sakaiUserId = sakaiProxy.getCurrentUserId();
                    int totalItems = dashboardCommonLogic.countNewsLinksByGroupId(sakaiUserId, entityReference);

                    Map<String, Object> results = new HashMap<String, Object>();
                    results.put("totalCount", totalItems);
                    if (offset > totalItems) {
                        results.put("items", new ArrayList<NewsLink>());
                        results.put("count", 0);
                    } else {
                        List<NewsLink> items = dashboardCommonLogic.getNewsLinksByGroupId(sakaiUserId,
                                entityReference, limit, offset);
                        results.put("items", items);
                        results.put("count", items.size());
                    }
                    results.put("details", rl.getString("dash.details"));
                    results.put("offset", offset);

                    results.put("more-link", rl.getString("dash.grouped.more.link", "[[ Show more ... ]]"));
                    results.put("more-status",
                            rl.getString("dash.grouped.more.status", "[[ Showing {0} of {1} items ]]"));
                    results.put("more-status-last",
                            rl.getString("dash.news.linksCount2", "[[ Showing item {0} of {1} items ]]"));
                    results.put("more-status-range",
                            rl.getString("dash.news.linksCount3", "[[ Showing {0} to {1} of {2} items ]]"));

                    JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig);
                    String jsonString = jsonHelper.getJsonObjectFromMap(results).toString();
                    if (logger.isDebugEnabled()) {
                        logger.debug("Returning JSON:\n" + jsonString);
                    }
                    IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
                    getRequestCycle().setRequestTarget(t);
                    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VIEW_GROUP,
                            "/dashboard/news/current/" + entityReference);
                } else if (itemCount == 1) {
                    Map<String, Object> entityMap = dashboardCommonLogic.getEntityMapping(entityType,
                            entityReference, locale);

                    String jsonString = getJsonStringFromMap(entityMap);
                    if (logger.isDebugEnabled()) {
                        logger.debug("Returning JSON:\n" + jsonString);
                    }
                    IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
                    getRequestCycle().setRequestTarget(t);
                    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_ITEM_DETAILS,
                            "/dashboard/?/?/" + entityReference);
                } else if (dashEvent != null && !dashEvent.trim().equals("")) {
                    // report the event
                    dashboardCommonLogic.recordDashboardActivity(dashEvent, entityReference);
                }
            }
        }
    };
    dashboardPage.add(entityDetailRequest);
    dashboardPage.add(new Label("callbackUrl", entityDetailRequest.getCallbackUrl().toString()));

    AbstractAjaxBehavior starHandler = new AbstractAjaxBehavior() {

        public void onRequest() {
            logger.debug("starHandler.onRequest() ");

            String message = null;
            boolean success = true;
            ResourceLoader rl = new ResourceLoader("dash_entity");
            //get parameters
            final RequestCycle requestCycle = RequestCycle.get();

            WebRequest wr = (WebRequest) requestCycle.getRequest();

            HttpServletRequest hsr = wr.getHttpServletRequest();

            long itemId = -1L;
            String action = null;
            try {
                BufferedReader br = hsr.getReader();

                String jsonString = br.readLine();
                if ((jsonString == null) || jsonString.isEmpty()) {
                    logger.error(" no json found ");
                    message = rl.getString("dash.ajax.failed");
                    success = false;
                } else {
                    if (logger.isDebugEnabled()) {
                        logger.debug(" json  is :" + jsonString);
                    }
                    JSONObject jsonObject = JSONObject.fromObject(jsonString);

                    itemId = jsonObject.optLong("itemId", Long.MIN_VALUE);
                    action = jsonObject.optString("dashAction");
                }

            } catch (IOException ex) {
                logger.error(ex);
                message = rl.getString("dash.ajax.failed");
                success = false;
            }

            String newIcon = null;

            if (itemId < 1 || action == null || action.trim().equals("")) {
                logger.error("invalid values found " + action + " " + itemId);
                message = rl.getString("");
            } else if (success) {
                if ("star".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.keepNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to star news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.star.success");
                        newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_UNSTAR);
                    } else {
                        message = rl.getString("dash.ajax.star.failed");
                    }
                } else if ("unstar".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.unkeepNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to unstar news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.unstar.success");
                        newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_STAR);
                    } else {
                        message = rl.getString("dash.ajax.unstar.failed");
                    }
                } else if ("hide".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.hideNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to hide news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.hide.success");
                    } else {
                        message = rl.getString("dash.ajax.hide.failed");
                        success = false;
                    }
                } else if ("show".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.unhideNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to show news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.show.success");
                    } else {
                        message = rl.getString("dash.ajax.show.failed");
                        success = false;
                    }
                }
            }
            Map<String, Object> results = new HashMap<String, Object>();
            results.put("message", message);
            results.put("success", Boolean.valueOf(success));
            if (newIcon != null) {
                results.put("newIcon", newIcon);
            }
            String jsonString = getJsonStringFromMap(results);
            if (logger.isDebugEnabled()) {
                logger.debug("Returning JSON:\n" + jsonString);
            }
            IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
            getRequestCycle().setRequestTarget(t);

        }
    };
    dashboardPage.add(starHandler);
    dashboardPage.add(new Label("dashActionHandler", starHandler.getCallbackUrl().toString()));

    ResourceLoader rl = new ResourceLoader("dash_entity");
    dashboardPage.add(new Label("genericErrorMessage", rl.getString("dash.generic.error")));

}

From source file:org.sakaiproject.dash.tool.pages.DashboardPage.java

License:Educational Community License

public DashboardPage() {

    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VISIT,
            "/dashboard/page/" + sakaiProxy.getCurrentSiteId());

    final WebMarkupContainer dashboardPage = new WebMarkupContainer("dashboard-page");
    dashboardPage.setOutputMarkupId(true);
    add(dashboardPage);/*ww w . ja va 2  s. c om*/

    MOTDPanel motdPanel = new MOTDPanel("motdPanel");
    motdPanel.setOutputMarkupId(true);
    dashboardPage.add(motdPanel);

    CalendarLinksPanel calendarPanel = new CalendarLinksPanel("calendarPanel");
    calendarPanel.setOutputMarkupId(true);
    dashboardPage.add(calendarPanel);

    NewsLinksPanel newsPanel = new NewsLinksPanel("newsPanel");
    newsPanel.setOutputMarkupId(true);
    dashboardPage.add(newsPanel);

    AbstractAjaxBehavior entityDetailRequest = new AbstractAjaxBehavior() {

        public void onRequest() {

            logger.debug("entityDetailRequest.onClick() ");

            //get parameters
            final RequestCycle requestCycle = RequestCycle.get();

            WebRequest wr = (WebRequest) requestCycle.getRequest();

            HttpServletRequest hsr = wr.getHttpServletRequest();

            String entityReference = null;
            String entityType = null;
            int itemCount = 0;
            int offset = -1;
            String dashEvent = null;
            try {
                BufferedReader br = hsr.getReader();

                String jsonString = br.readLine();
                if ((jsonString == null) || jsonString.isEmpty()) {
                    logger.error(" no json found for entityReference: " + entityReference);
                } else {
                    if (logger.isDebugEnabled()) {
                        logger.debug(" json  is :" + jsonString);
                    }
                    JSONObject jsonObject = JSONObject.fromObject(jsonString);

                    entityReference = jsonObject.optString("entityReference", "");
                    entityType = jsonObject.optString("entityType", "");
                    itemCount = jsonObject.optInt("itemCount", 1);
                    dashEvent = jsonObject.optString("dashEvent", "");
                    offset = jsonObject.optInt("offset", -1);
                }

            } catch (IOException ex) {
                logger.error(ex);
            }

            Locale locale = hsr.getLocale();
            if (entityReference != null && !entityReference.trim().equals("") && entityType != null
                    && !entityType.trim().equals("")) {
                if (itemCount > 1) {
                    ResourceLoader rl = new ResourceLoader("dash_entity");
                    int limit = dashboardConfig.getConfigValue(DashboardConfig.PROP_DEFAULT_ITEMS_IN_DISCLOSURE,
                            20);
                    if (offset < 0) {
                        offset = 0;
                    }
                    String sakaiUserId = sakaiProxy.getCurrentUserId();
                    int totalItems = dashboardCommonLogic.countNewsLinksByGroupId(sakaiUserId, entityReference);

                    Map<String, Object> results = new HashMap<String, Object>();
                    results.put("totalCount", totalItems);
                    if (offset > totalItems) {
                        results.put("items", new ArrayList<NewsLink>());
                        results.put("count", 0);
                    } else {
                        List<NewsLink> items = dashboardCommonLogic.getNewsLinksByGroupId(sakaiUserId,
                                entityReference, limit, offset);
                        results.put("items", items);
                        results.put("count", items.size());
                    }
                    results.put("details", rl.getString("dash.details"));
                    results.put("offset", offset);

                    results.put("more-link", rl.getString("dash.grouped.more.link", "[[ Show more ... ]]"));
                    results.put("more-status",
                            rl.getString("dash.grouped.more.status", "[[ Showing {0} of {1} items ]]"));
                    results.put("more-status-last",
                            rl.getString("dash.news.linksCount2", "[[ Showing item {0} of {1} items ]]"));
                    results.put("more-status-range",
                            rl.getString("dash.news.linksCount3", "[[ Showing {0} to {1} of {2} items ]]"));

                    JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig);
                    String jsonString = jsonHelper.getJsonObjectFromMap(results).toString();
                    if (logger.isDebugEnabled()) {
                        logger.debug("Returning JSON:\n" + jsonString);
                    }
                    IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
                    getRequestCycle().setRequestTarget(t);
                    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VIEW_GROUP,
                            "/dashboard/news/current/" + entityReference);
                } else if (itemCount == 1) {
                    Map<String, Object> entityMap = dashboardCommonLogic.getEntityMapping(entityType,
                            entityReference, locale);

                    String jsonString = getJsonStringFromMap(entityMap);
                    if (logger.isDebugEnabled()) {
                        logger.debug("Returning JSON:\n" + jsonString);
                    }
                    IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
                    getRequestCycle().setRequestTarget(t);
                    dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_ITEM_DETAILS,
                            "/dashboard/?/?/" + entityReference);
                } else if (dashEvent != null && !dashEvent.trim().equals("")) {
                    // report the event
                    dashboardCommonLogic.recordDashboardActivity(dashEvent, entityReference);
                }
            }
        }
    };
    dashboardPage.add(entityDetailRequest);
    dashboardPage.add(new Label("callbackUrl", entityDetailRequest.getCallbackUrl().toString()));

    AbstractAjaxBehavior starHandler = new AbstractAjaxBehavior() {

        public void onRequest() {
            logger.debug("starHandler.onRequest() ");

            String message = null;
            boolean success = true;
            ResourceLoader rl = new ResourceLoader("dash_entity");
            //get parameters
            final RequestCycle requestCycle = RequestCycle.get();

            WebRequest wr = (WebRequest) requestCycle.getRequest();

            HttpServletRequest hsr = wr.getHttpServletRequest();

            long itemId = -1L;
            String action = null;
            try {
                BufferedReader br = hsr.getReader();

                String jsonString = br.readLine();
                if ((jsonString == null) || jsonString.isEmpty()) {
                    logger.error(" no json found ");
                    message = rl.getString("dash.ajax.failed");
                    success = false;
                } else {
                    if (logger.isDebugEnabled()) {
                        logger.debug(" json  is :" + jsonString);
                    }
                    JSONObject jsonObject = JSONObject.fromObject(jsonString);

                    itemId = jsonObject.optLong("itemId", Long.MIN_VALUE);
                    action = jsonObject.optString("dashAction");
                }

            } catch (IOException ex) {
                logger.error(ex);
                message = rl.getString("dash.ajax.failed");
                success = false;
            }

            String newIcon = null;

            if (itemId < 1 || action == null || action.trim().equals("")) {
                logger.error("invalid values found " + action + " " + itemId);
                message = rl.getString("");
            } else if (success) {
                if ("star".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.keepNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to star news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.star.success");
                        newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_UNSTAR);
                    } else {
                        message = rl.getString("dash.ajax.star.failed");
                    }
                } else if ("unstar".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.unkeepNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to unstar news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.unstar.success");
                        newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_STAR);
                    } else {
                        message = rl.getString("dash.ajax.unstar.failed");
                    }
                } else if ("hide".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.hideNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to hide news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.hide.success");
                    } else {
                        message = rl.getString("dash.ajax.hide.failed");
                        success = false;
                    }
                } else if ("show".equalsIgnoreCase(action)) {
                    try {
                        success = dashboardCommonLogic.unhideNewsItem(sakaiProxy.getCurrentUserId(), itemId);
                    } catch (Exception e) {
                        logger.warn("Error trying to show news-link for user " + sakaiProxy.getCurrentUserId()
                                + ", newsLinkId == " + itemId);
                        success = false;
                    }
                    if (success) {
                        message = rl.getString("dash.ajax.show.success");
                    } else {
                        message = rl.getString("dash.ajax.show.failed");
                        success = false;
                    }
                }
            }
            Map<String, Object> results = new HashMap<String, Object>();
            results.put("message", message);
            results.put("success", Boolean.valueOf(success));
            if (newIcon != null) {
                results.put("newIcon", newIcon);
            }
            String jsonString = getJsonStringFromMap(results);
            if (logger.isDebugEnabled()) {
                logger.debug("Returning JSON:\n" + jsonString);
            }
            IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString);
            getRequestCycle().setRequestTarget(t);

        }
    };
    dashboardPage.add(starHandler);
    dashboardPage.add(new Label("dashActionHandler", starHandler.getCallbackUrl().toString()));

    ResourceLoader rl = new ResourceLoader("dash_entity");
    dashboardPage.add(new Label("genericErrorMessage", rl.getString("dash.generic.error")));

}

From source file:sk.drunkenpanda.leaflet.AbstractLeafletTest.java

License:Apache License

/**
 * Prepares request that triggers AJAX behavior and contains parameter with given name and value.
 *
 * @param tester the wicket tester which triggers behavior
 * @param behavior the behavior that should be triggered
 * @param parameterName the name of parameter
 * @param parameterValue the value of parameter
 * @return mock HTTP request that triggers given behavior
 *//*from  ww w  . j av  a2  s  . c  o  m*/
protected MockHttpServletRequest prepareRequest(WicketTester tester, AbstractAjaxBehavior behavior,
        String parameterName, String parameterValue) {
    MockHttpServletRequest request = new MockHttpServletRequest(tester.getApplication(),
            tester.getHttpSession(), tester.getServletContext());

    Url url = Url.parse(behavior.getCallbackUrl().toString(), Charset.forName(request.getCharacterEncoding()));

    // make url suitable for wicket tester use. usually this involves stripping any leading ..
    // segments to make the url absolute
    for (Iterator<String> segments = url.getSegments().iterator(); segments.hasNext();) {
        String segment = segments.next();
        if (segment.equals("..") || segment.equals(".")) {
            segments.remove();
        }
    }

    request.addHeader("Wicket-Ajax", "true");
    request.addHeader("Wicket-Ajax-BaseURL", url.toString());
    request.setUrl(url);

    request.setParameter(parameterName, parameterValue);

    return request;
}