Sunday, October 2, 2016

Wrintig the Custom CSS registration for multilingual Sites in SharePoint

Wrintig the Custom CSS registration for multilingual Sites in SharePoint 

From Layout forlder:
--------------------------
<SharePoint:CssRegistration ID="CssRegistration1" Name="Themable/CommonInitiative.css" runat="server" After="oslo.css"/>

From Style Library: if using the varistion in sharepoint
------------------------
<SharePointWebControls:CssRegistration ID="CssRegistration3" name="<% $SPUrl:~sitecollection/Style Library/~language/Themable/New_Css/CommonInitiative.css %>" runat="server"/>

Saturday, October 1, 2016

Binding DropDown with Ajax query from web service

Binding DropDown with Ajax query from web service 


$(document).ready(function () {

        var jobsVmDiv = new jobsVm();
        jobsVmDiv.init();
        ko.applyBindings(jobsVmDiv, $('#JobsDiv').get(0));

        $("#Job-selector option[value='-1']").attr("selected", true);
         $("#Job-selector").change(function () {
            var selector = document.getElementById("Job-selector");
            var ChangeText = $("#Job-selector option:selected").text();
            var completeUrl = selector.options[selector.selectedIndex].value;
            var indexOfComma = completeUrl.indexOf(',');
            window.location.href = window.location.origin + "/" + completeUrl;

        });

    })

    var jobsVm = function () {

        var self = this;

        self.JobsData = ko.observableArray(),

        self.language = function () {
            var lang = _spPageContextInfo.currentLanguage;
            if (lang == '1033') {
                return "English";
            }
            else {
                return "Arabic";
            }
        },
        self.init = function () {
            $.ajax({
                url: "/_vti_bin/JSONEServices/MoPWWebServices.svc/Vacancies/" + self.language(),
                type: "GET",
                async: false,
                headers: { "ACCEPT": "application/json;odata=verbose" },
                success: function (data) {
                    if (data.length > 0) {
                        for (var i = 0; i < data.length; i++) {
                            console.log(data);
                            $("#Job-selector").append($("<option></option>").val(data[i].Link).html(data[i].Title));
                        }
                    }
                },
                error:
                    function (data) {
                    },
            });
        }
    }
<html>
<select id="Job-selector" />
 <option value="-1"><asp:Literal ID="Literal1" runat="server" Text="<%$Resources:custom,PleaseSelect_Text%>"></asp:Literal></option>
</select>
</html>

Knockout Js Sample for Photo and Video

Knockout Js Sample for Photo and Video
------------------------------------------------------

<script type="text/javascript">

    var language;
    var languageText;
    var ajaxResult = new Array();
    var value = 1;
    var youtubeVideos = ko.observableArray();

    var myObj = function () {
        var content, id, link, status, openingDate
    }

    var viewModelPhotoGallery = function () {
        var self = this;

        self.video = ko.observable(),

self.photos = ko.observable(),

        self.language = ko.observable(language),

        self.init = function () {
            //GetFilteredTenders(self.tenders);
            //self.language(languageText);
            var uri = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=UUPO5AY4qU1s-HedJZ8T7xSw&key=AIzaSyB2uf8CU9re_74ybnPmnv4A--MpzfYWYME';
            $.ajax({
                url: uri,
                type: "GET",
                async: false,
                headers: { "ACCEPT": "application/json;odata=verbose" },
                success: function (data) {

                    self.video(data.items[0]);


                },
                error: function (request, textStatus, errorThrown) {

                }
            });


            var uri = '/_vti_bin/JSONEServices/MoPWWebServices.svc/GetTopTwoPhotos';
            $.ajax({
                url: uri,
                type: "GET",
                async: false,
                headers: { "ACCEPT": "application/json;odata=verbose" },
                success: function (data) {

                    self.photos(data);
               

                },
                error: function (request, textStatus, errorThrown) {

                }
            });
        }
    }


    $(document).ready(function () {
        var vmPG = new viewModelPhotoGallery();
        vmPG.init();
        ko.applyBindings(vmPG, $('#divPhotoVideos').get(0));


    })



    function CheckVideoLanguage(VideoTitle, Page) {

        if (Page.indexOf("en-us") > -1) {
            if (VideoTitle.match(/[a-z]/i)) {
                return true;
            } else {
                return false;
            }
        }
        else {
            if (!(VideoTitle.match(/[a-z]/i))) {
                return true;
            } else {
                return false;
            }
        }
    }
</script>

<div class="col-md-5 col-sm-12" id="divPhotoVideos">
    <header>
        <h2 class="full-caps text-left ">PHOTOS & VIDEOS <span class="pull-right view-all view-all-gallery">
            <a href="#">View Gallery
                <img src="/Style Library/en-us/Images/in-arrow.png" width="5" height="9" alt="" /></a>
        </span>
        </h2>
        <div class="border-3 Theme-border-color">
            <div class="border-left Theme-border-color-left"></div>
        </div>
    </header>
    <article>
        <!-- ko with: video() -->
        <div class="video-container col-md-12 col-sm-12 padding-right-none">
            <div>
                <iframe width="100%" height="234px" data-bind="attr: { 'src': 'http://www.youtube.com/embed/' + snippet.resourceId.videoId }" frameborder="0" allowfullscreen=""></iframe>

            </div>
            <div class="video-heading col-md-12 col-sm-12">
                <div class="videotittle" data-bind="text: snippet.title"> </div>
            </div>
        </div>
        <!-- /ko -->
<!-- ko foreach: photos -->

<div class="col-md-6 col-sm-6 col-xs-11 padding-right-none">
<img data-bind= "attr: { src: '/' + Url }" width="277px" height="182px">
</div>

<!-- /ko -->
    </article>
</div>

=======================================================================Another example=======================================================================




<script type="text/javascript" src="/SiteCollectionScripts/jquery.cssslider.js"></script>

<script type="text/javascript">

    var initiativeObj = function () {
        var Description,
ImageURL,
Title;
        var photos = [];
    }

    var photosClass = function () {
        var Title,
ImageURL,
CssString;
    }

    function AssignCssClassName(index) {

        switch (index) {
            case 0:
                return 'current_item';
                break;
            case 1:
                return 'previous_item';
                break;
            case 2:
                return 'next_item';
                break;
            case 3:
                return 'previous_item_2';
                break;
            case 4:
                return 'next_item_2';
                break;
        }
    }

    var vmInitiatativeDiv = function () {
        var self = this;

        self.initiatives = ko.observableArray([]),

        self.language = function () {
            var lang = _spPageContextInfo.currentLanguage;
            if (lang == '1033') {
                return "English";
            }
            else {
                return "Arabic";
            }
        },

        self.init = function () {

            $.ajax({
                url: 'http://vm.mopw.local/_vti_bin/JSONEServices/MoPWWebServices.svc/InitiativesWithNewsAndGallery/' + self.language() + '/',
                type: "GET",
                async: false,
                headers: { "ACCEPT": "application/json;odata=verbose" },
                success: function (data) {
                    console.log('length is : ' + data.length);
                    for (i = 0; i < data.length; i++) {
                        var obj = new initiativeObj();
                        obj.Description = data[i].Description;
                        obj.ImageURL = data[i].ImageURL;
                        obj.Title = data[i].Title;
                        obj.photos = new Array();

                        for (j = 0; j < data[i].PhotoGallery.length; j++) {
                            if (j == 5)
                                break;
                            var objPhoto = new photosClass();
                            objPhoto.Title = data[i].PhotoGallery[j].Title;
                            objPhoto.ImageURL = data[i].PhotoGallery[j].ImageURL;
                            objPhoto.CssString = AssignCssClassName(j);

                            obj.photos.push(objPhoto);
                        }
                        self.initiatives.push(obj);
                    }
                    console.log(self.initiatives());
                },
                error: function (request, textStatus, errorThrown) {

                }
            });
        }
    }

    $(document).ready(function () {

        var vmInitiatative = new vmInitiatativeDiv();

        vmInitiatative.init();
        ko.applyBindings(vmInitiatative, $('#InitiativeDiv').get(0));
    });

</script>
<div id="InitiativeDiv">

            <div class="col-md-7 col-sm-12 col-xs-12">
                <header>
                    <h2 class="full-caps text-left ">INITIATIVES<span class="pull-right view-all  view-all-initiatives">
                        <a href="#">View All Initiatives
                                    <img src="/Style Library/en-us/Images/in-arrow.png" width="5" height="9" alt="" />
                        </a>
                    </span>
                    </h2>
                    <div class="border-3 Theme-border-color">
                        <div class="border-left Theme-border-color-left"></div>
                    </div>
                </header>
                <article>

                    <article>

                        <!-- Initiative HTML -->

                        <div class="initiativeContainer">

                            <ul class="initiativeSlider">
                                <!-- ko foreach: initiatives -->
                                <li>
                                    <div class="choose_slider">
                                        <div class="choose_slider_items">
<ul id="mySlider1">
<!-- ko foreach: photos -->
                                           
                                                <li data-bind="attr: { class: CssString }">
                                                   <img data-bind="attr: { src: ImageURL }" width="226" height="152">
                                                </li>
                                           
<!-- /ko -->
</ul>
                                        </div>
                                    </div>
                                    <div class="col-md-12 initiative-content-container">
                                        <div class="col-md-3">
                                            <img data-bind="attr: { src: ImageURL }" alt="" />
                                        </div>
                                        <div class="col-md-9">
                                            <header class="">
                                                <div class="ReadingInitiative" data-bind="text: Title"></div>
                                            </header>
                                            <div class="border-btm-1 Theme-border-btm1-color" data-bind="html: Description"></div>
                                         
                                        </div>
                                    </div>

                                </li>
                                <!-- /ko-->
                           
                            </ul>

                            <!--header>
                                    <img alt="" class="initiatives-image" src="/Style Library/en-us/Images/initiatives-img.jpg">
                                </header-->

                            <script>

                                $(document).ready(function () {
                                    $('.initiativeSlider').bxSlider({
                                        auto: true,
                                        autoStart: true,
                                        pager: false,
                                        controls: true
                                    });
                                });


                                $(function () {
                                    $("#mySlider1").AnimatedSlider({
                                        //prevButton: "#btn_prev1",
                                        //nextButton: "#btn_next1",
                                        visibleItems: 5,
                                        infiniteScroll: true,
                                        willChangeCallback: function (obj, item) { $("#statusText").text("Will change to " + item); },
                                        changedCallback: function (obj, item) { $("#statusText").text("Changed to " + item); }
                                    });
                                    $("#mySlider2").AnimatedSlider({
                                        //prevButton: "#btn_prev1",
                                        //nextButton: "#btn_next1",
                                        visibleItems: 5,
                                        infiniteScroll: true,
                                        willChangeCallback: function (obj, item) { $("#statusText").text("Will change to " + item); },
                                        changedCallback: function (obj, item) { $("#statusText").text("Changed to " + item); }
                                    });


                                });

                            </script>


                        </div>
                    </article>



                </article>
            </div>
</div>




Knockout js binding Sample with ajax query

// Knockout  js binding Modal Sample with ajax query

-------------------------------------------------------------------

<link href="/Style Library/en-us/stylesheets/main.css" type="text/css" rel="stylesheet" />
<style>
.Theme-button-color {
    background-color: #a2821f !important;
    color: #fff !important;
}
</style>
<script type="text/javascript">

    var language;
    var languageText;
    var ajaxResult = new Array();
    var value = 1;
    var myObj = function() {
        var content, id, link, status, openingDate
    }

    var viewModel = function() {
        var self = this;

        self.tenders = ko.observableArray([]),

        self.language = ko.observable(language),

        self.init = function() {
            GetFilteredTenders(self.tenders);
            self.language(languageText);

        }
    }

    function daysInMonth(month, year) {
        return new Date(year, month, 0).getDate();
    }

    $(document).ready(function(){
        GetLanguage();
        //GetFilteredTenders();
        var vm = new viewModel();
        vm.init();
        ko.applyBindings(vm, $('#tendersDiv').get(0));
    });
    function GetLanguage() {

        var lang = _spPageContextInfo.currentLanguage;
        if (lang == '1033') {
            language = '/en-us/';
            languageText = "en";
        }
        else {
            language = '/ar-sa/';
            languageText = "ar";
        }
    }



    function GetFilteredTenders(tenders) {

        var currentYear = new Date().getFullYear();
        var month = "12";
        var status = "Open";
     
        var nbDays = new Date(currentYear, month, 0).getDate();
        var days = daysInMonth(12, currentYear);
        var d = new Date();
        var today = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
        var newsIndex = 0;
        var d = new Date();
        var formatedDate = d.format("yyyy-MM-ddTHH:mm:ssZ");
        // var  uri="https://services.moid.gov.ae/_api/lists/getbytitle('tenders')/items?$select=ID,TenderName_EN,TenderName_AR,TenderStatus,OpeningDate,SubmitDate&$filter=OpeningDate le datetime'" + formatedDate + "' and TenderStatus eq 'Approved' and SubmitDate le datetime'" + formatedDate + "'";
        var uri = "https://services.moid.gov.ae/_api/lists/getbytitle('tenders')/items?$select=ID,TenderName_EN,TenderName_AR,TenderStatus,OpeningDate,SubmitDate&$filter=OpeningDate ge datetime'" + formatedDate + "' and TenderStatus eq 'Approved' and SubmitDate le datetime'" + formatedDate + "'";
        $.ajax({
            url: uri,
            type: "GET",
            async: false,
            headers: { "ACCEPT": "application/json;odata=verbose" },
            success: function (data) {

                if(data.d.results.length>0)
                {
                    for(var i=0; i<data.d.results.length; i++)
                    {
                        if(i>3)
                        { break;}

                        if (language == '/en-us/') {
                            var cObj = new myObj();
                            cObj.content = data.d.results[i].TenderName_EN;
                        }
                        else{
                            cObj.content = data.d.results[i].TenderName_AR;
                        }
                        cObj.id = data.d.results[i].ID;
                        cObj.link = "https://services.moid.gov.ae" + language + "Competition/Pages/AvailableTenders.aspx?itemId=" + data.d.results[i].ID;
                        cObj.status = "open";
                        cObj.openingDate = moment(data.d.results[i].OpeningDate).format('MMMM DD, YYYY');
                        tenders.push(cObj);
                        //ajaxResult.push(cObj);


                    }
                }
                if(tenders().length < 4){
                    GetCloseTenders(tenders);
                }

            },
            error: function (request, textStatus, errorThrown) {

            }
     

        });

    }

    function GetCloseTenders(tenders)
    {
        var currentYear = new Date().getFullYear();
        var month = "12";
        var status = "Open";

        var value = 1;
        var nbDays = new Date(currentYear, month, 0).getDate();
        var days = daysInMonth(12, currentYear);
        var d = new Date();
        var today = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
        var newsIndex = 0;
   
        var d = new Date();
        var formatedDate = d.format("yyyy-MM-ddTHH:mm:ssZ");

        var  uri="https://services.moid.gov.ae/_api/lists/getbytitle('tenders')/items?$select=ID,TenderName_EN,TenderName_AR,TenderStatus,OpeningDate,SubmitDate&$filter=OpeningDate le datetime'" + formatedDate + "' and TenderStatus eq 'Approved' and SubmitDate le datetime'" + formatedDate + "'";

        $.ajax({
            url: uri,
            type: "GET",
            async: false,
            headers: { "ACCEPT": "application/json;odata=verbose" },
            success: function (data) {

                if(data.d.results.length>0)
                {
                    for(var i=0; i<data.d.results.length; i++)
                    {
                        if(tenders().length < 4){
                            if (language == '/en-us/') {
                                var cObj = new myObj();
                                cObj.content = data.d.results[i].TenderName_EN;
                            }
                            else{
                                cObj.content = data.d.results[i].TenderName_AR;
                            }
                            cObj.id = data.d.results[i].ID;
                            cObj.link = "https://services.moid.gov.ae" + language + "Competition/Pages/AvailableTenders.aspx?itemId=" + data.d.results[i].ID;

                            cObj.openingDate = moment(data.d.results[i].OpeningDate).format('MMMM DD, YYYY');
                            cObj.status="close";

                            tenders.push(cObj);
                            //ajaxResult.push(cObj);
                        }
                        else{
                            break;
                        }
 
                    }

                }
            },
            error: function (request, textStatus, errorThrown) {

            }

        });

    }

</script>

 <section id="tendersDiv" class="wrapper style1 special tender-bg">
        <div>
            <div class="inner">
                <header>
                    <h2 class="full-caps text-left tender-heding">Tenders <span class="pull-right view-all-tenders">
<!-- ko if: language() == "en" -->
<a href="/en-us/Competition/Pages/AvailableTenders.aspx">View All Tenders <i aria-hidden="true" class="fa fa-caret-right" style="font-size: 15px;"></i></a>
<!-- /ko -->
<!-- ko if: language() === 'ar' -->
<a href="/ar-sa/Competition/Pages/AvailableTenders.aspx">View All Tenders <i aria-hidden="true" class="fa fa-caret-right" style="font-size: 15px;"></i></a>
<!-- /ko -->
</span></h2>
                    <div class="border-3 Theme-border-color">
                        <div class="border-left Theme-border-color-left"></div>
                    </div>
                </header>
<!-- ko foreach: tenders -->
                <div class="col-md-3 col-sm-6 col-xs-12">

                    <div class="tender-box">
                        <div class="tender-text" >
                          <span data-bind="text: content"></span>
                            <div class="tender-datte" data-bind="text: openingDate"></div>
                            <div class="text-center margn-top-10">
<!-- ko if: status == 'open' -->
                                <a data-bind="attr : { href: link }" href="#" class="button special tendersbtn Theme-button-color">Participate </a>
<!-- /ko -->
<!-- ko if: status == 'close' -->
<span class="button special tendersbtn Theme-button-color" style="cursor: default;background-color: gray !important;">Closed </span>
<!-- /ko -->
                            </div>
                        </div>
                    </div>
                </div>
<!-- /ko -->
             
            </div>
        </div>
    </section>