+1-888-365-2779
Try Now
More in this section

Forums / Developing with Sitefinity / Searchbox Error

Searchbox Error

5 posts, 0 answered
  1. Decker
    Decker avatar
    2 posts
    Registered:
    28 Jul 2015
    22 Jun
    Link to this post

    I am getting a weird search box error when trying to search. 

    I created a blank page (Start from scratch) and still get this error. (MVC)

  2. Nick Rajotte
    Nick Rajotte avatar
    5 posts
    Registered:
    17 Nov 2016
    27 Jun
    Link to this post
    Hello Decker,

    I just wanted to add this answer to your forum post in case someone else runs into this issue as I see it was answered in your support ticket you filed.

    This issue occurs due to a Javascript error in the Digital Experience Cloud module, disabling this module will fix this issue.  Currently this is the only workaround available and the issue is being investigated by our development engineers.

    Regards,
    Nick Rajotte
    Telerik
     
    Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
     
  3. Matthew
    Matthew avatar
    0 posts
    Registered:
    24 Jun 2012
    20 Aug in reply to Nick Rajotte
    Link to this post

    I am running into this as well.  We are using DEC and can't disable it.

    The SearchBox runs fine in preview but I get that "sentence.object" error when I navigate to the page itself.

    All I have is a blank page with the SearchBox widget on it.

     

     

  4. Matthew
    Matthew avatar
    0 posts
    Registered:
    24 Jun 2012
    20 Aug in reply to Decker
    Link to this post

    Hey Decker,

    Have you guys found a workaround for this?  We are using DEC and can't shut it off.

  5. Victor Leontyev
    Victor Leontyev avatar
    65 posts
    Registered:
    01 Jul 2014
    21 Aug in reply to Matthew
    Link to this post

    Hi Matthew. I can suggest one solution for you. If you are using Feather.

    1) Place attached search-box-without-dec.js somewhere

    (function ($) {
        $(document).ready(function () {
            var searchBoxIdFields = $('[data-sf-role="searchTextBoxId"]');
     
            for (var i = 0; i < searchBoxIdFields.length; i++) {
                var searchBoxIdField = $(searchBoxIdFields[i]);
                var controlServerData = {
                    resultsUrl: searchBoxIdField.siblings('[data-sf-role="resultsUrl"]').first().val(),
                    indexCatalogue: searchBoxIdField.siblings('[data-sf-role="indexCatalogue"]').first().val(),
                    wordsMode: searchBoxIdField.siblings('[data-sf-role="wordsMode"]').first().val(),
                    disableSuggestions: $.parseJSON(searchBoxIdField.siblings('[data-sf-role="disableSuggestions"]').first().val()),
                    minSuggestionLength: searchBoxIdField.siblings('[data-sf-role="minSuggestionLength"]').first().val(),
                    suggestionFields: searchBoxIdField.siblings('[data-sf-role="suggestionFields"]').first().val(),
                    language: searchBoxIdField.siblings('[data-sf-role="language"]').first().val(),
                    suggestionsRoute: searchBoxIdField.siblings('[data-sf-role="suggestionsRoute"]').first().val(),
                    searchTextBoxSelector: searchBoxIdField.val(),
                    searchButtonSelector: searchBoxIdField.siblings('[data-sf-role="searchButtonId"]').first().val()
                };
                featherSearchBoxWidget(controlServerData);
            }
     
            function featherSearchBoxWidget(serverData) {
                var searchTextBox = $(serverData.searchTextBoxSelector),
                        searchButton = $(serverData.searchButtonSelector);
     
                searchButton.click(navigateToResults);
                searchTextBox.keypress(keypressHandler);
     
                /* Initialization */
                if (!serverData.disableSuggestions) {
                    searchTextBox.keyup(keyupHandler);
     
                    try {
                        searchTextBox.autocomplete({
                            source: [],
                            messages:
                                {
                                    noResults: '',
                                    results: function () { }
                                },
                            select: function (event, ui) {
                                searchTextBox.val(ui.item.value);
                                navigateToResults(event);
                            },
                        }).autocomplete("widget").addClass("sf-autocomplete");
                    } catch (e) {
                        // Fixes jQuery bug, causing IE7 to throw error "script3 member not found".
                        // The try/catch can be removed when the bug is fixed.
                    }
                }
     
                /* Event handlers */
                function keypressHandler(e) {
                    if (!e)
                        e = window.event;
     
                    var keyCode = null;
                    if (e.keyCode) {
                        keyCode = e.keyCode;
                    }
                    else {
                        keyCode = e.charCode;
                    }
     
                    if (keyCode == 13) {
                        navigateToResults(e);
                    }
                }
     
                function suggestionsSuccessHandler(result, args) {
                    var dataSource = result.Suggestions;
                    searchTextBox.autocomplete('option', 'source', dataSource);
     
                    searchTextBox.autocomplete("search", searchTextBox.val().trim());
                }
     
                function keyupHandler(e) {
                    if (e.keyCode != 38 &&  // up arrow
                        e.keyCode != 40 && // down arrow
                        e.keyCode != 27) { // esc
                        // When the auto complete menu is shown, only this event is detected
                        if (e.keyCode == 13) {
                            // when enter is pressed
                            navigateToResults(e);
                        }
     
                        var request = {};
                        var searchText = searchTextBox.val().trim();
                        if (searchText.length >= serverData.minSuggestionLength) {
                            request.IndexName = serverData.indexCatalogue;
                            request.SuggestionFields = serverData.suggestionFields;
                            request.Text = searchText;
                            request.Language = serverData.language;
     
                            $.ajax({
                                type: "GET",
                                url: serverData.suggestionsRoute,
                                dataType: 'json',
                                data: request,
                                success: suggestionsSuccessHandler
                            });
                        }
                    }
                }
     
                /* Helper methods */
                function navigateToResults(e) {
                    if (!e)
                        e = window.event;
     
                    if (e.stopPropagation) {
                        e.stopPropagation();
                    }
                    else {
                        e.cancelBubble = true;
                    }
                    if (e.preventDefault) {
                        e.preventDefault();
                    }
                    else {
                        e.returnValue = false;
                    }
     
                    var query = searchTextBox.val();
     
                    if (query && query.trim() && serverData.indexCatalogue) {
                        window.location = getLocation();
                    }
                }
     
                function getLocation() {
                    var query = searchTextBox.val().trim();
     
                    var separator = (serverData.resultsUrl.indexOf("?") == -1) ? "?" : "&";
     
                    var catalogueParam = separator + "indexCatalogue=" + encodeURIComponent(serverData.indexCatalogue),
                        searchQueryParam = "&searchQuery=" + encodeURIComponent(query),
                        wordsModeParam = "&wordsMode=" + serverData.wordsMode;
     
                    var url = serverData.resultsUrl + catalogueParam + searchQueryParam + wordsModeParam;
     
                    return url;
                }
     
                function sendSentence() {
                    if (window.DataIntelligenceSubmitScript) {
                        DataIntelligenceSubmitScript._client.sentenceClient.writeSentence({
                            predicate: "Search for",
                            object: searchTextBox.val(),
                            objectMetadata: [{
                                'K': 'PageUrl',
                                'V': location.href
                            }]
                        });
                    }
                }
            }
        });
    }(jQuery));

    2) Override searchbox view. Put SearchBox.cshtml to ResourcePackages\{YOUR PACKAGE}\MVC\Views\SearchBox\SearchBox.cshtml

    @model Telerik.Sitefinity.Frontend.Search.Mvc.Models.ISearchBoxModel
     
    @using Telerik.Sitefinity.Services;
    @using Telerik.Sitefinity.Modules.Pages;
    @using Telerik.Sitefinity.Frontend.Mvc.Helpers;
     
    @{
        var searchTextBoxId = Guid.NewGuid();
        var searchButtonId = Guid.NewGuid();
     }
     
    @(!String.IsNullOrEmpty(Model.CssClass) ?
        Html.Raw(String.Format("<div class=\"{0} form-inline\">", Model.CssClass)) :
        Html.Raw("<div class=\"form-inline\">"))
        <div class="form-group">
            <input type="search" title="@Html.Resource("SearchInput")" placeholder="@Model.BackgroundHint" id="@Html.Raw(searchTextBoxId)" class="form-control" value="@Html.Raw(ViewBag.SearchQuery)"/>
        </div>
        <button type="button" class="btn btn-primary" id="@Html.Raw(searchButtonId)">@Html.Resource("SearchLabel")</button>
         
        <input type="hidden" data-sf-role="resultsUrl" value="@Html.Raw(Model.ResultsUrl)" />
        <input type="hidden" data-sf-role="indexCatalogue" value="@Html.Raw(Model.IndexCatalogue)" />
        <input type="hidden" data-sf-role="wordsMode" value="@Html.Raw(Model.WordsMode.ToString())" />
        <input type="hidden" data-sf-role="disableSuggestions" value='@(Model.DisableSuggestions ? Html.Raw("true") : Html.Raw("false"))' />
        <input type="hidden" data-sf-role="minSuggestionLength" value="@Html.Raw(Model.MinSuggestionLength)" />
        <input type="hidden" data-sf-role="suggestionFields" value="@Html.Raw(Model.SuggestionFields)" />
        <input type="hidden" data-sf-role="language" value="@Html.Raw(Model.Language)" />
        <input type="hidden" data-sf-role="suggestionsRoute" value="@Html.Raw(Model.SuggestionsRoute)" />
        <input type="hidden" data-sf-role="searchTextBoxId" value='@("#" + searchTextBoxId.ToString())' />
        <input type="hidden" data-sf-role="searchButtonId" value='@("#" + searchButtonId.ToString())' />
    </div>
     
    @* The inline editing functionality is loading jQuery too. *@
     
    @Html.Script(ScriptRef.JQuery, "top", true)
    @Html.Script(ScriptRef.JQueryUI, "top", true)
     
    @Html.Script("Mvc/Scripts/SearchBox/search-box-without-dec.js", "bottom")

    3) Fix path to search-box-without-dec.js inside this view

5 posts, 0 answered