nopCommerce 3.20 roadmap and estimated release date. Let's discuss.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
10 years ago
Is it possible to add invoice pdf editor ? So we can edit the pdf settings ? We need to add some text to the footer and change te size of the banner.

thanks!
10 years ago
Will this issue be fixed in 3.20?

How to change date format for Admin interface
https://www.nopcommerce.com/boards/t/2653/how-to-change-date-format-for-admin-interface.aspx

tx
10 years ago
webwinkeladviseur wrote:
Is it possible to add invoice pdf editor ? So we can edit the pdf settings ? We need to add some text to the footer and change te size of the banner.

thanks!

https://nopcommerce.codeplex.com/workitem/10238
10 years ago
Hi,.

1 File attachments when sending email would be very helpful. In the order confirmation, there should be a way to send general terms and conditions as PDF file attached to the email.

2. The confirmation (check box) the terms and conditions should be done on the page "Comfirm". The checkbox text should also have a link to the terms and conditions, and so on available frames.

3. When the ProductBox (always where the price for the customer will be shown), a parameter should be added for a text "incl. VAT and excl. shipping costs" or "excl VAT and excl. shipping costs". In text, there must be a link to the page shipping.


Point 1 - 3: Important functions in Germany.

4. in the ProductBox the capability should appear.

Frank
10 years ago
currently we have OrderPaidEvent, OrderPlacedEvent and OrderCancelledEvent events

would be great to support more order events, such as for example OrderShippedEvent and OrderDelivered events?

(please correct me if I'm wrong and we can already subscribe to these events from custom plugins? tx)
10 years ago
Also would be nice to add column DoNotDeliverBeforeUtc DateTime column to QueuedEmail table/entity so we can schedule when emails will be delivered in the future?
10 years ago
EntityUpdated event should both make the old entity value (pre update) and the new entity values (post update) available in the EventMessage, so we can compare old and new values and perform logic accordingly?
10 years ago
a request: is it possible to add to the topic's page a field so we can choose if we want to display in one, two or three colomns ?
10 years ago
Hi Andrei,
A small suggestion for the product image uploader in order to add multiply images at once.
I think it will help to be by design on Nop.

I have already tested it and it is fine.
On \Administration\Views\Product\_CreateOrUpdate.Pictures.cshtml file replacing the marked as  /*commented*/ with marked with  /*added*/


@model ProductModel

@using Telerik.Web.Mvc.UI;

@if (Model.Id > 0)
{
    <div>
        @(Html.Telerik().Grid<ProductModel.ProductPictureModel>()
                    .Name("productpictures-grid")
                    .DataKeys(x =>
                    {
                        x.Add(y => y.Id).RouteKey("Id");
                    })
                    .Columns(columns =>
                    {
                        columns.Bound(x => x.PictureUrl)
                            .ClientTemplate("<a href='<#= PictureUrl #>' target='_blank'><img alt='<#= PictureId #>' src='<#= PictureUrl #>' width='150' /><a/>")
                            .ReadOnly();
                        columns.Bound(x => x.DisplayOrder);
                        columns.Command(commands =>
                        {
                            commands.Edit().Text(T("Admin.Common.Edit").Text);
                            commands.Delete().Text(T("Admin.Common.Delete").Text);
                        });

                    })
                    .Editable(x =>
                    {
                        x.Mode(GridEditMode.InLine);
                    })
                    .DataBinding(dataBinding =>
                    {
                        dataBinding.Ajax().Select("ProductPictureList", "Product", new { productId = Model.Id })
                            .Update("ProductPictureUpdate", "Product")
                            .Delete("ProductPictureDelete", "Product");
                    })
                    .EnableCustomBinding(true))
    </div>
    <p>
        <strong>@T("Admin.Catalog.Products.Pictures.AddNew")</strong>
    </p>



/*commented*/

    
  @*  <script type="text/javascript">
    
        $(document).ready(function () {
            $('#addProductPicture').click(function () {
                var pictureId = $("#@Html.FieldIdFor(model => model.AddPictureModel.PictureId)").val();
                var displayOrder = $("#@Html.FieldIdFor(model => model.AddPictureModel.DisplayOrder)").val();
                
                if (pictureId == 0) {
                    alert('Upload picture first');
                    return;
                }

                $('#addProductPicture').attr('disabled', true);
                $.ajax({
                    cache:false,
                    type: "POST",
                    url: "@(Url.Action("ProductPictureAdd", "Product"))",
                    data: { "pictureId": pictureId, "displayOrder": displayOrder, "productId": @Model.Id },
                    success: function (data) {
                        var productpicturesGrid = $("#productpictures-grid");
                        productpicturesGrid.data('tGrid').ajaxRequest();
                        $('#addProductPicture').attr('disabled', false);
                    },
                    error:function (xhr, ajaxOptions, thrownError){
                        alert('Failed to add product picture.');
                        $('#addProductPicture').attr('disabled', false);
                    }  
                });
            });
        });
    </script>        
    <table class="adminContent">
        <tr>
            <td class="adminTitle">
                @Html.NopLabelFor(model => model.AddPictureModel.PictureId):
            </td>
            <td class="adminData">
                @Html.EditorFor(model => model.AddPictureModel.PictureId)
                @Html.ValidationMessageFor(model => model.AddPictureModel.PictureId)
            </td>
        </tr>
        <tr>
            <td class="adminTitle">
                @Html.NopLabelFor(model => model.AddPictureModel.DisplayOrder):
            </td>
            <td class="adminData">
                @Html.EditorFor(model => model.AddPictureModel.DisplayOrder)
                @Html.ValidationMessageFor(model => model.AddPictureModel.DisplayOrder)
            </td>
        </tr>
        <tr>
            <td colspan="2" align="left">
                <input type="button" id="addProductPicture" class="t-button" value="@T("Admin.Catalog.Products.Pictures.AddButton")" />
            </td>
        </tr>
    </table>*@
    
        /*added*/
        @Html.Partial("_ProductPicture", @Model.Id)
    
}
else
{
    @T("Admin.Catalog.Products.Pictures.SaveBeforeEdit")
}






Add the new file \Administration\Views\Product\_ProductPicture.cshtml as below:

@model int
@using Nop.Core;
@using Nop.Web.Framework.UI;
@{
    //register CSS and JS
    Html.AddCssFileParts("~/Administration/Content/fileuploader.css");
    Html.AddScriptParts("~/Administration/Scripts/fileuploader.js");

    //other variables
    var random = CommonHelper.GenerateRandomInteger();
    var clientId = "picture" + random;
    var pictureService = EngineContext.Current.Resolve<Nop.Services.Media.IPictureService>();
    var picture = pictureService.GetPictureById(Model);
}


<div id="@clientId">
    <noscript>
        <p>
            Please enable JavaScript to use file uploader.</p>
        <!-- or put a simple form for upload here -->
    </noscript>
</div>
<br />
<div id="multiImages" style=" display:none;"></div>

<script type="text/javascript">
    $(function () {
        $(function () {
            var uploader@(clientId) = new qq.FileUploader({
                element: document.getElementById('@clientId'),
                action: '@(Url.Content("~/Admin/Picture/AsyncUpload"))',
                onComplete: function(id, fileName, responseJSON){
                    if (responseJSON.success) {                      
                        var displayOrder=0;
                        $.ajax({
                            cache:false,
                            type: "POST",
                            url: "@(Url.Action("ProductPictureAdd", "Product"))",
                            data: { "pictureId": responseJSON.pictureId, "displayOrder": displayOrder, "productId": @Model },
                            success: function (data) {
                                 var productpicturesGrid = $("#productpictures-grid");
                                 productpicturesGrid.data('tGrid').ajaxRequest();

                                 $('ul.qq-upload-list li.qq-upload-success').remove();
                                 $('#addProductPicture').attr('disabled', false);
                            },
                            error:function (xhr, ajaxOptions, thrownError){
                                alert('Failed to add product picture.')
                                $('#addProductPicture').attr('disabled', false);
                            }  
                        });

                    }
                }
            });
        });
    });
</script>






Thanks for the great job done.
10 years ago
I have a working multifile product uploader for the 3.0 and 3.1 version too.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.