Giter Club home page Giter Club logo

sn-client's Introduction

Welcome to sensenet

sensenet is a content repository with API first approach packed with a full featured permission system, preview and collaboration tools.

Join the chat at https://gitter.im/SenseNet/sensenet

A basic setup of sensenet has three top-level parts:

  • A content repository that is the storage and service layer
  • An application that uses the content of the connected content repository through API calls
  • A sensenet admin surface (only in SNaaS) that helps you carry out common content management tasks

SNaaS architecture

Everything is content

Content is the basic block for storing information in sensenet. A content can be any kind of data, user, document, workspace, memo, task, and more. Using content items everywhere unlocks a great deal of exceptional features, making your experience as a user more seamless, and your job as a developer a lot easier.

Licensing

SNaaS (sensenet as a service)

In this model, sensenet content repositories live in our cloud infrastructure.

Advantages

  • no installation required (easy onboarding)
  • patches and upgrades are taken care of by us
  • no hosting related tasks
  • central admin surface
  • flexible pricing plans (based on # of contents, requests, and users)

on-prem

For the terms of on-prem licensing please contact our sales team.

Resources

Check out the links below to get further information:

Contributing

All kinds of contributions are welcome! We are happy if you have an idea, bugfix or feature request to share with others. Please check out our Contribution guide for details.

sn-client's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sn-client's Issues

Multiple downloading

@kultsar commented on Tue Aug 07 2018

Needs UX (#37) before issue can go live. At present I would imagine the following:

  • User selects more than one items, including folders
  • Clicking the download button anywhere (including right click menu download) will download all items in a zip file

@tusmester commented on Tue Aug 07 2018

This feature also requires some backend planning and development. Maybe create a different issue for that in the main repo.

  • is there a size limit? What happens if I try to download a folder containing GBs of data?
  • there are existing projects where this features is built using a background task that creates a zip file in a dedicated repository folder and notifies the user when it is ready. The reason: it takes server resources to create a zip file and this should not be the job of the web server.
  • permissions: only the user who initiated the process can access the generated zip file
  • cleanup: for how much time will we keep these zip files on the server?

@kultsar commented on Tue Aug 07 2018

Moved backend related questions to SenseNet/sensenet#441

[list-controls-react] Upload popup modifications

@kultsar commented on Wed Aug 08 2018

Talked to UX about upload list:

  • Ordering: the file that had been uploaded most recently should be in the top of the list and the whole list should go from latest to oldest.
  • User should be able to remove files one by one (possibly with an (X) icon next to each file) and a clear all button on the top of the list.
  • Failed uploads: The failed files should be on top of the list where the user can see which files were not uploaded.

[controls-react] FileUpload control

  • Should handle a fileupload on a new form (add a new file in a predefined folder)
  • Should handle file change on an edit form (remove? the previously referred file)
    • Display the filename and a change and delete button

Implement JWT in our example todo apps

App checklist

  • react example todo app
  • vue.js example todo app
  • angular (dani's) example todo app
  • angular2 example todo app
  • aurelia (bedizoli's) example todo app

Admin UI - Alpha V2

Alpha V2

  • Localization
  • Content editing improvements
  • fixes is @sensenet/controls-react - e.g. User Edit form with default schema
    fallback control?
  • TBD
    • Monaco editor on mobile - editing doesn't work on touch devices. Look for alternative? Use a
    • Improve error boundaries - feedback tool?
  • Generic improvements (refactor, code conventions, etc...)
    • Extract ContentListPanel keyboard handler - move to ContentList component(?)
    • Move default Document Viewer settings into the DocViewer component
    • Breadcrumbs component to generic - move content-specific stuff to ContentBreadcrumb
    • Extract complex (>2field) inline props to interfaces
  • CommandPalette improvements
    • Check if can be moved from Redux to hooks
    • Custom callback on activate (instead of triggering a route change)
    • Provider for context menu actions on current content
    • Provider for custom OData actions and functions on current content
    • Provider for navigation entries (Go to e.g. Personal Settings, Dashboard, etc...)
  • Content operations improvements with Content Picker
    • Move content (from context menu)
    • Copy content (from context menu)
  • New main routes
    • Search & saved queries
    • Version info
    • Setup (settings)
    • Dashboard (Needs UX)
  • Notifications
    • Upload progress info
    • Info about failed requests / Event log

[react-component-docs] Storybook UX feedback

@kultsar commented on Wed Oct 17 2018

https://sn-react-component-docs.netlify.com/

Need feedback:

  • general description of the component
  • notes section descriptions
  • (generated, not editable) example code
    • how important it is
    • anything else we can ask?
  • enough properties are used in the interactive (clickable) examples?
  • anything else
    • keyboard shortcuts
      • maybe mention them in the general description
      • different icon or make it more obvious on the UI?
    • search:
      • in filter
      • with keyboard shortcut

We do not aim to provide interactive (editable) example code. It may not worth the effort as devs can just copy the example code modify/test it. If we receive such feedback, we will listen to it and process it, of course.

Generic error & not found pages

@gallayl commented on Mon Aug 06 2018

We should create pages with some generic error messages for the following scenarios (similar as for the DocViewer ones):

  • 404 - not found, the content has been moved or you don't have permission to see it
  • 500 - server error, try again later

Distribute localized string resources

We have to figure out how localized string resources can be distributed from sensenet to the client.
At the moment we have placeholder classes in the generated Resources.ts for dot notation support.

[sn-dms-demo] [UX] Multiple downloading

@kultsar commented on Wed Aug 08 2018

  • User selects multiple items and clicks download

  • If right click/3dots menu: download all or only the item where right click happened?

  • If download all: use a zip file? If yes, how should we notify the user? How long to keep the zip and provide access,

  • What if user does not have permissions for anything in the tree?

[DMS] Integrate search component to DMS

@kultsar commented on Wed Nov 07 2018

For all contexts

  • Hit list: icon + display name
  • Simple search - yes, details below
  • Advanced search - yes, details below
  • Dropdown from search box: not yet. Would postpone it to a later phase, too complex UX questions for now. Could include context prefilter, autocomplete suggestions, autocomplete results, search history. Since this is a demo app, we don't have to complicate things, still, hint for UX questions just for autocomplete suggestions for later use: https://baymard.com/blog/autocomplete-design
  • Search only within the active workspace, not across workspaces.
  • Advanced search settings (if available) will open only when the user clicks the advanced search settings button
  • No need for tabs or the "More options" link seen in UX designs, implement just one search settings view.

Doclib context

  • Scope: folders and files only

Simple search

  • Search within text extract. Same as Contains in advanced search. Anything entered here should also be displayed there as well if that field is seen.

Advanced search

  • Name: File or folder name
  • Contains: Search within text extract. Same as Simple search. Anything entered here should also be displayed in Simple search box.
  • Filetype: extension list + "folders". Only if minumum effort: accept user typed values not in list, otherwise fixed list.
  • Combo 1: User type (-Any role-;Owner;Creator;Modifier;Shared by;Shared with) + User email (autocomplete source: names and email addresses)
  • Owner: email address
  • Shared with: email address
  • Combo 2: Date type (-Any date type-;Created;Modified;Shared) + Date range (-Any time-;Today;Yesterday;Last 7 days;Last 30 days;Last 90 days;Last 365 days)
  • Modified: Date range values of -Any time-;Today;Yesterday;Last 7 days;Last 30 days;Last 90 days;Last 365 days.
  • Shared (date): Date range values of -Any time-;Today;Yesterday;Last 7 days;Last 30 days;Last 90 days;Last 365 days.
  • Where. Path picker for navigating up to Doclib root folder, not higher. Default: "-Anywhere-", or perhaps the name of the workspace could be better.

Notes:

  • Email address for owner and shared with: The actual user can type parts of the user name or email address to search for. Dropdown displays autocomplete suggestions for possible users. Autocomplete source: names (if known) + email addresses of internal users and possibly external users (from content sharing) from within this workspace. When an item is selected, only the email addresses should be displayed in the search field. Autocomplete items: avatar, display name, email address (discuss/big effort...?)

Users context

  • Scope: users only.
  • Simple search only, no advanced search.
  • Searches in text extract.

Groups context

  • Scope: groups only.
  • Simple search only, no advanced search.
  • Searches in text extract.

Comments in DocViewer

Permissions

  • See comments: open permission on content
  • Add comments: open permission on content
  • Modify comments: nobody
  • Delete comments: open permission on content

Won’t do (now)

  • No replies, no thread, just single comments
  • No editing, not moving markers, just create/delete comments
  • If the binary file changes, all shapes/comments will be removed by the backend. Later might add confirmation/notification function to let user control/know about this, but not now.
  • Will not truncate long comments, no “more/less” links.

Comment vs Office Online Editing

  • What can we do with Office 365? Can we do preview in read only mode, comments? SenseNet/sn-dms-demo#70
    • We can preview in read only, but only off365 files
    • We can comment, but only off365 files. No other shapes

Store

  • file - which file the comment belongs to
  • who - who commented
  • when - DISCUSS: allow for comment modification? Store creation and modification dates?
  • Contents - DISCUSS: simple text?
  • Page number
  • Position
  • Order: height, width

Implementation plan

  • New Comment CTD. Place where the preview content is located, under the file in services.
  • Create a folder for holding comments under File's content template
  • Patch: create the comments folder under all(!) files with correct permissions
  • Create components in sn-document-viewer-react
  • Use these components in DMS demo

[controls-react] ImageUpload control

  • It is a 'group' of two controls (fileupload and reference)
  • The image is shown in the control after upload or change
  • The control can be cleared

Generated schema vs online editing

At the moment client-side forms are built on a top of the generated Typescript ContentType and Schema definitions. There's a serious limitation with this approach. Consider the way if an admin want to modify a CTD and check the updated CreateContent from:

Old WebPages/Explore flow:

  1. Browse to the CTD and add a field
  2. Create a new Content instance

Current TS/SPA flow

  1. Browse to the CTD and add a field
  2. Update your generated TS schema
  3. Rebuild your front-end
  4. Deploy your front-end

Suggestion

  • We should clean up and separate the concepts of client-side ContentTypes and Schemas
    • ContentTypes should be generated just like now and should be used as content model classes (no change here)
    • Schemas should be downloaded on repository instantiation
    • A frontend with just the build-in ContentTypes and the dynamically downloaded schemas should be able to generate dynamic Content forms for a custom backend with custom CTD-s

Downloading (system) files

@herflis commented on Thu Aug 02 2018

Some of the file types cannot be downloaded from the repository (.json, .txt, .md, etc). Some of them are system files, other ones have an extension that is not listen in the web.config. The question is what should happen if a file cannot be downloaded by the user because its type? The possible answers:

  • 'Download' should not be listed in the actionmenu, if the file cannot be downloaded
  • Add all this extensions to the web.config so that all the file types can have the same handler and could be downloaded

See current handler+extension definitions here:
https://github.com/SenseNet/sensenet/blob/master/src/nuget/content/Web.config.transform

[document-viewer-react] Share action triggers preview action again

@kultsar commented on Thu Sep 27 2018

Applies to both desktop and mobile GUIs.

  • User previews a content.
  • Scrolls to a page other than the first
  • Clicks Share button.
  • Document preview is triggered again behind share modal, and preview jumps back to first page.
  • If user closes share window with Cancel or OK, preview action is triggered yet again.
  • Share action should not trigger preview
  • Closing share window with cancel/submitting should not trigger preview.

Advanced sharing

@kultsar commented on Fri Nov 16 2018

image

image

  • [UX] Create design based on industry best practices
  • [DEV] List/Add/remove/modify access types (public with link/authorized persons) and access levels (view or edit)

Separate issues or here?

  • When sharing, autocomplete for names and email addresses (also in basic sharing UI)
  • Notification sharing?
  • Batch sharing multiple content items?

[list-controls-react] Overwrite confirmation on name match

@kultsar commented on Wed Aug 08 2018

If incremental naming is switched off, on uploading single or bulk files or directory uploads that contain items that would overwrite previously uploaded files or directories, the system should pop up a confirmation dialogue.

  • After initiating the upload, the system should check target and source structure for matching path (dirs) or matching paths + filenames.
  • Should stop at first match (in case of bulk files or dir upload), and ask for overwrite confirmation and for overwriting any other possible matches
  • If user confirms, continue with upload and overwrite any matching items, otherwise cancel the upload

[document-viewer-react] DocTree 1st iteration

@CsabaPeter commented on Thu Jul 26 2018

As the result of the user tests these improvements should be implemented:

Field controls

  • Update Material
  • Dynamic schema loading
  • Writing/fixing Tests

  • Localization
  • Grouping, ordering
  • Research on complex field controls (e.g. autocomplete, reference field)

[document-viewer-react] Basic editing

we can display them but cannot add new ones
(Note: IF we save a shape the rotation should be 0! - cause we don't save the image rotation form now)

One example for adding shapes:

const addshape = () => {
    documentData.shapes.redactions.push({ h: 100, w: 300, x: 10, y: 10, imageIndex: 1, guid: '1012' })
    documentData.shapes.highlights.push({ h: 100, w: 300, x: 10, y: 120, imageIndex: 1, guid: '1013' })
    documentData.shapes.annotations.push({
      h: 100,
      w: 300,
      x: 10,
      y: 240,
      imageIndex: 1,
      guid: '1014',
      index: 1,
      lineHeight: 17,
      text: 'balbal',
      fontBold: 'none',
      fontColor: 'black',
      fontFamily: 'Ariel',
      fontItalic: 'none',
      fontSize: '12px',
    })

    updateDocumentData(documentData)
    viewerState.updateState({ hasChanges: true })
  }

Search component

We should talk about the standalone Search UI component for React during the next refinement.

  • Expectations / feature list for 1.0
    • Components

      • autocomplete search
      • hit list
      • advanced search view, field controls for search
      • custom controls for field types
    • Built-in examples - decide later

    • Showcase application (?) - decide later

    • "Saved Queries". Private queries for the while. Add save button to hit list + text field to name it. + Run/Rename/Delete. Do not modify saved query yet.

  • Integration to DMS
    • Additional custom components (e.g. field controls for "Shared with")
    • Connection with the Content List
  • Create Epic / Tasks

image

image

image

[DMS] Saved Queries

  • Allow users to save their custom queries made by the Search Component
  • Should be implemented in the DMS Demo project

Migrate tests from Mocha to Jest Stage 1.

Migrate old tests from Mocha to Jest in the following packages:

  • authentication-jwt
  • authentication-google
  • client-core
  • client-utils
  • control-mapper
  • default-content-types (?)
  • query
  • redux
  • redux-promise-middleware
  • repository-events

[default-content-types] Priority and Status field declarations

This is the response from a content update:

    "Name": "Duis commodo nunc",
    "StartDate": "0001-01-01T00:00:00",
    "DueDate": "2015-11-30T01:00:00Z",
    "AssignedTo": {
      "__deferred": {
        "uri": "/odata.svc/workspaces/Project/budapestprojectworkspace/Tasks('Duis commodo nunc')/AssignedTo"
      }
    },
    "Priority": [
      "1"
    ],
    "Status": [
      "active"
    ]

Priority and Status fields are arrays. But in the declaration file those are enums.

export declare class Task extends ListItem {
    StartDate?: string;
    DueDate?: string;
    AssignedTo?: ContentListReferenceField<User>;
    Priority?: Priority;
    Status?: Status;
    TaskCompletion?: number;
    RemainingDays?: number;
    DueText?: string;
    DueCssClass?: string;
}

[dms-demo] Users and Groups

Notes:

  • Workspace creation automatically creates local admin, editors, users groups
  • Users will be added to workspace if they are added to any of the workspace groups

Do not implement adding new (local) users/groups. Use automatically created local admin, editors, users. Local admins can add global users and groups to these local workspaces and their groups from the global user/group lists administered elsewhere (old ui, or upcoming new admin ui) instead.

[DMS] Previewing empty file

The problem: when previewing an empty file, user gets "Preview image generation is in progress" message, but should receive something like "This file has no content - preview is not available."

May not worth the effort. I can imagine cases when empty files are present in a doclib, and user wants to preview them.

[client-core] Admin GUI UX rework

@kultsar commented on Sun Oct 21 2018

ui/ux for all epic issues + in general: what interface for admins in general. In the old interface they have to dig down to workspace/user/group/orgunit management with too many clicks, as everything was handled in lists in subtrees. Perhaps we could use a dashboard instead.

Write use cases

Layout of Admin UI vs DMS UI
Dashboard

[document-viewer-react] Share action triggers preview action again

🐜 Bug Report

Clicking the share button or closing the share modal when previewing content will trigger te preview action again. This makes the preview jump back to first page.

📦 Package / Application

document-viewer-react

📃 Version

1.0.3

🐜 Describe the bug

Clicking the share button or closing the share modal when previewing content will trigger te preview action again. This makes the preview jump back to first page.

👉 Steps To Reproduce

  1. User previews a content.
  2. Scrolls to a page other than the first
  3. Clicks Share button.
  4. Document preview is triggered again behind share modal, and preview jumps back to first page.
  5. If user closes share window with Cancel or OK, preview action is triggered yet again.

😯 Current behavior

🤔 Expected behavior

  • Share action should not trigger preview
  • Closing share window with Cancel/OK should not trigger preview.

🖼 Screenshots

  1. We are on the second page, and click the share button.
    image

  2. Share modal appears, but document jumps back to first page
    image

If I click Cancel or OK here, preview is generated again.

💻 Code sample (for developers)

🌍 Your Environment (for developers)

Software Version(s)
Language (js/ts)
Operating System
NPM/Node/Yarn
Bundler

🌍 Your environment (for apps / examples)

Applies to both desktop and mobile GUIs.

  • Device: PC
  • OS: Win 10
  • Browser: Chrome
  • Version: Version 71.0.3578.98 (Official Build) (64-bit)

🗨 Additional context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.